zoukankan      html  css  js  c++  java
  • 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 | 掘金社区
  • 相关阅读:
    Git常用
    自学过程
    SpringJunitTest
    通过Maven更换环境配置文件
    MongDB的DateZone
    工具使用问题
    项目中遇到的关于Java的问题
    iTerm2使用Profiles自动登录
    脚本:将git项目下载到本地并启动
    一些新的认识
  • 原文地址:https://www.cnblogs.com/yesyes/p/15500605.html
Copyright © 2011-2022 走看看