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