学习TypeScrip12(never类型)

简介: 差异2 当我们鼠标移上去的时候会发现 只有void和number never在联合类型中会被直接移除

TypeScript 将使用 never 类型来表示不应该存在的状态(很抽象是不是)


// 返回never的函数必须存在无法达到的终点
// 因为必定抛出异常,所以 error 将不会有返回值
function error(message: string): never {
    throw new Error(message);
}
// 因为存在死循环,所以 loop 将不会有返回值
function loop(): never {
    while (true) {
    }
}


never 与 void 的差异

    //void类型只是没有返回值 但本身不会出错
    function Void():void {
        console.log();
    }
    //只会抛出异常没有返回值
    function Never():never {
    throw new Error('aaa')
    }


差异2   当我们鼠标移上去的时候会发现 只有void和number    never在联合类型中会被直接移除


type A = void | number | never


never 类型的一个应用场景


举一个我们可能会见到的例子


type A = '小满' | '大满' | '超大满' 
function isXiaoMan(value:A) {
   switch (value) {
       case "小满":
           break 
       case "大满":
          break 
       case "超大满":
          break 
       default:
          //是用于场景兜底逻辑
          const error:never = value;
          return error
   }
}


比如新来了一个同事他新增了一个篮球,我们必须手动找到所有 switch 代码并处理,否则将有可能引入 BUG 。


而且这将是一个“隐蔽型”的BUG,如果回归面不够广,很难发现此类BUG。


那 TS 有没有办法帮助我们在类型检查阶段发现这个问题呢?


type A = '小满' | '大满' | '超大满' | "小小满"
function isXiaoMan(value:A) {
   switch (value) {
       case "小满":
           break 
       case "大满":
          break 
       case "超大满":
          break 
       default:
          //是用于场景兜底逻辑
          const error:never = value;
          return error
   }
}


由于任何类型都不能赋值给 never 类型的变量,所以当存在进入 default 分支的可能性时,TS的类型检查会及时帮我们发现这个问题


学习TypeScrip13(symbol类型)_qq1195566313的博客-CSDN博客

目录
相关文章
|
6月前
|
JavaScript 安全
TypeScript 中的高级类型转换技术:映射类型、条件类型和类型推断
TypeScript 中的高级类型转换技术:映射类型、条件类型和类型推断
|
6月前
|
JavaScript 前端开发 程序员
TypeScript【枚举、联合类型函数_基础、函数_参数说明 、类的概念、类的创建】(二)-全面详解(学习总结---从入门到深化)
TypeScript【枚举、联合类型函数_基础、函数_参数说明 、类的概念、类的创建】(二)-全面详解(学习总结---从入门到深化)
44 0
|
6月前
|
JavaScript 前端开发 编译器
TypeScript【可选属性、只读属性、额外的属性检查、函数类型、类类型、继承接口】(四)-全面详解(学习总结---从入门到深化)
TypeScript【可选属性、只读属性、额外的属性检查、函数类型、类类型、继承接口】(四)-全面详解(学习总结---从入门到深化)
70 0
|
6月前
|
JavaScript 前端开发 安全
TypeScript进阶(三)类型演算与高级内置类型
TypeScript 是一种静态类型检查的 JavaScript 超集,它通过类型注解和类型推断来提供更强大的类型系统。在 TypeScript 中,类型演算是一种重要的概念,它允许我们在编译时对类型进行操作和计算。本文将深入探讨 TypeScript 类型演算的原理和应用。
102 0
|
JavaScript
带你读《现代TypeScript高级教程》十一、泛型和类型体操(3)
带你读《现代TypeScript高级教程》十一、泛型和类型体操(3)
|
JavaScript 容器
带你读《现代TypeScript高级教程》十一、泛型和类型体操(1)
带你读《现代TypeScript高级教程》十一、泛型和类型体操(1)
|
JavaScript 安全
带你读《现代TypeScript高级教程》十一、泛型和类型体操(4)
带你读《现代TypeScript高级教程》十一、泛型和类型体操(4)
|
JavaScript 索引
带你读《现代TypeScript高级教程》十一、泛型和类型体操(2)
带你读《现代TypeScript高级教程》十一、泛型和类型体操(2)
|
JavaScript
学习TypeScrip11(类型推论|类型别名)
如果你声明变量没有定义类型也没有赋值这时候TS会推断成any类型可以进行任何操作
89 0
学习TypeScrip11(类型推论|类型别名)
|
JavaScript 前端开发
学习TypeScrip10(枚举类型)
字符串枚举的概念很简单。 在一个字符串枚举里,每个成员都必须用字符串字面量,或另外一个字符串枚举成员进行初始化。
59 0
学习TypeScrip10(枚举类型)