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 | 掘金社区
  • 相关阅读:
    初识MVC web框架--Controller与View交互1
    Web框架UI系列--MVC常用控件讲解
    管理大师__Vuex
    语言国际化----vue-i18n
    uniapp动态获取高度
    vue__双向数据绑定v-model
    vue__模板解析3一般指令解析
    vue__模板解析2:事件指令解析
    vue__模板解析:大花括号表达式解析
    vue__数据代理
  • 原文地址:https://www.cnblogs.com/yesyes/p/15500605.html
Copyright © 2011-2022 走看看