TypeScript中Never类型和类型断言

Never 类型

never类型表示:那些永不存在的值的类型。
例如:never类型是那些总是会【抛出异常】或根本就【不会有返回值的函数表达式】或【箭头函数表达式的返回值类型】

never类型是任何类型的子类型,也可以赋值给任何类型。
然而,没有类型是never的子类型或可以赋值给never类型(除了never本身之外)。
any也不可以赋值给never。

//never类型是那些总是会【抛出异常】
function error(message: string): never {
    throw new Error(message);
}

never 在项目中的运用

interface Info {
  //当我们不知道这个数组里面是什么类型的时候,我们就可以设置为never类型
  like: never[];  
  age: number;
  name: string;
}
let obj: Info = {
  like: [],
  age: 18,
  name:'磅礴'
}

类型断言

有时候你会遇到这样的情况,你会比TypeScript更了解某个值的详细信息。
通过类型断言告诉编译器,“相信我,我知道自己在干什么”。
类型断言好比其它语言里的类型转换,但是不进行特殊的数据检查和解构。
它没有运行时的影响,只是在编译阶段起作用

类型断言的两种方式

类型断言有两种形式。 其一是“尖括号”语法:
let someValue: any = "this is a string";
let strLength: number = (<string>someValue).length;

另一个为as语法:
let someValue: any = "this is a string";
let strLength: number = (someValue as string).length;

两种形式是等价的。 至于使用哪个大多数情况下是凭个人喜好;
然而,当你在TypeScript里使用JSX时,只有 as语法断言是被允许的。
posted @ 2022-10-15 14:45  南风晚来晚相识  阅读(494)  评论(0编辑  收藏  举报