• ts笔记-never和void


    申明为 void 类型的变量,只能赋予 undefined 和 null。因此一个函数如果返回值是void类型,返回值只能是null或undefined

    
    let unusable: void = undefined;
    
    // OK
    function fn(): void {
      return null
    }
    
    // OK
    function fn(): void {
    }
    

    never 类型表示永远不会有值的一种类型,从概念上就和void是不一样的。比如一个总是会抛出错误的函数,或者是一个从来不会有返回值的函数(函数的默认返回值undefined)。

    // OK
    let bar: never = (() => {
      throw new Error('Throw my hands in the air like I just dont care');
    })();
    
    // ERROR
    function fn(): never {
    }
    

    never 类型仅能被赋值给另外一个 never

    // ERROR
    let foo: never = 123
    

    never使用示例

    下面这个函数接收一个string或者number作为参数,返回一个boolean值。如果不是string或者number,则抛出异常。

    function foo(x: string | number): boolean {
      if (typeof x === 'string') {
        return true;
      } else if (typeof x === 'number') {
        return false;
      }
    
      // 如果fail不是一个 never 类型,这会报错
      // 但是由于 TypeScript 理解 `fail` 函数返回为 `never` 类型,它可以让你调用它。因为你可能会在运行时用它来做安全或者详细的检查
      return fail('Unexhaustive');
    }
    
    function fail(message: string): never {
      throw new Error(message);
    }
    
    常用网站: SegmentFault | GitHub | 掘金社区
  • 相关阅读:
    plsql中查看sql执行计划
    数据库连接查询
    Class 的基本语法
    javascript中的描述对象(Descriptor)
    Nop源码分析三 周三 晴 天气不错
    NOP源码分析 二 周二
    NOP源码分析 一
    react-wow
    8、vue中得监听属性:watch--- /////watch、computed、methods得区别
    7.Vue_____keep-alive(结合路由)
  • 原文地址:https://www.cnblogs.com/yesyes/p/15500605.html
Copyright © 2020-2023  润新知