TypeScript中Never类型和类型断言
typescript 类型 断言
2023-09-27 14:22:17 时间
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语法断言是被允许的。
相关文章
- Web3DGame之路,Babylonjs 和TypeScript学习笔记(一)
- 解决Vue问题:TypeScript intellisense is disabled on template. To enable, configure `“jsx“...
- 极简TypeScript教程--数据类型
- 【TypeScript】TS中type和interface在类型声明时的区别
- TypeScript tsconfig.json(TypeScript配置)
- TypeScript 命名空间
- TypeScript 高级类型 类(class)
- Web Essentials之JavaScript,TypeScript和CoffeeScript
- TypeScript中数组类型的定义
- TypeScript函数(与js函数区别、返回值类型、必填参数可选参数默认参数剩余参数、函数重载)、接口(对象形状描述、可选属性只读属性、索引签名任意属性、接口与类型别名的区别、声明合并、接口继承)、类(类的属性和方法、私有字段、存取器、继承、访问控制修饰符、类的方法重载)
- 3.0 TypeScript补充(& ,type)
- 2.0 TypeScript类型2(object,any,unknown,void,never,enum)
- Typescript 中的 interface 和 type 到底有什么区别