有时,在使用类型时需要覆盖变量的类型,例如库提供了不正确的类型。
强制转换是重写类型的过程。
as
强制转换变量的一种直接方法是使用as
关键字,它将直接更改给定变量的类型。
转换实际上并不会更改变量中数据的类型,例如,以下代码将无法按预期工作,因为变量x
仍然持有一个号码。
let x: unknown = 4;
console.log((x as string).length); // prints undefined since numbers don't have a length
TypeScript 仍会尝试对强制转换进行类型检查,以防止看起来不正确的强制转换,例如以下内容将引发类型错误,因为 TypeScript 知道在不转换数据的情况下将字符串强制转换为数字是没有意义的:
console.log((4 as string).length); // Error: Conversion of type 'number' to type 'string' may be a mistake because neither type sufficiently overlaps with the other. If this was intentional, convert the expression to 'unknown' first.
下面的强制投射部分介绍了如何覆盖它。
<>
使用 <> 与使用 进行强制转换的效果相同as
。
这种类型的转换不适用于 TSX,例如在处理 React 文件时。
要覆盖 TypeScript 在转换时可能抛出的类型错误,请首先转换为unknown
,然后转到目标类型。
let x = 'hello';
console.log(((x as unknown) as number).length); // x is not actually a number so this will return undefined
亲自试一试 »
截取页面反馈部分,让我们更快修复内容!也可以直接跳过填写反馈内容!