在有些特殊的情况下 TS 无法去推断出来一个变量的具体类型,而作为开发者根据代码的使用情况是可以明确知道这个变量到底是什么类型的。
// 假设这个 nums 来自一个明确的接口
const nums = [100, 120, 119, 112];
const res = nums.find(i => i > 0);
const square = res as number ** 2;
console.log(square)
类型断言的方式有两种:
-
使用 as 关键词
const num1 = res as number -
在变量前面使用 <数据类型>
const num2 = <number>res // JSX 下不能使用
类型断言并不是类型转化,也就是说这里并不是把一个类型转化成另一个类型。因为类型转换是代码在运行阶段的一个概念,而这个地方类型断言只是在编译过程当中的一个概念。当代码编译过后这个断言就不会存在,所以说它跟类型转换是有本质上的差异的。