TypeScript 转换
在处理类型时,有时需要覆盖变量的类型,例如库提供了不正确的类型。
强制转换是覆盖类型的过程。
使用 as
进行转换
转换变量的一种直接方法是使用 as
关键字,这将直接更改给定变量的类型。
强制转换实际上并没有改变变量中数据的类型,例如下面的代码不能按预期工作,因为变量 x
仍然包含一个数字。
let x: unknown = 4;
console.log((x as string).length); // 打印 undefined 因为数字没有长度
TypeScript 仍将尝试对类型转换进行类型检查以防止看起来不正确的类型转换,例如以下将引发类型错误,因为 TypeScript 知道在不转换数据的情况下将字符串转换为数字是没有意义的:
console.log((4 as string).length); // 错误:将“数字”类型转换为“字符串”类型可能是错误的,因为这两种类型都没有充分重叠。 如果这是故意的,请先将表达式转换为“未知”。
下面的强制转换部分介绍了如何覆盖它。
Casting with <>
Using <> works the same as casting with as
.
这种类型的转换不适用于 TSX,例如在处理 React 文件时。
强制转换
要覆盖 TypeScript 在转换时可能抛出的类型错误,请先转换为 unknown
,然后再转换为目标类型。
实例
let x = 'hello';
console.log(((x as unknown) as number).length); // x 实际上不是一个数字,所以这将返回 undefined
亲自试一试 »