TS Casting
创建于 2024-12-03 /
27
字体:
[默认]
[大]
[更大]
在处理类型时,有时需要覆盖变量的类型,例如库提供了不正确的类型。
强制转换是覆盖类型的过程。
使用 as
进行转换
转换变量的一种直接方法是使用 as
关键字,这将直接更改给定变量的类型。
实例
let x: unknown = 'hello';console.log((x as string).length);
亲自试一试 »
强制转换实际上并没有改变变量中数据的类型,例如下面的代码不能按预期工作,因为变量 x
仍然包含一个数字。
console.log((x as string).length); // 打印 undefined 因为数字没有长度
TypeScript 仍将尝试对类型转换进行类型检查以防止看起来不正确的类型转换,例如以下将引发类型错误,因为 TypeScript 知道在不转换数据的情况下将字符串转换为数字是没有意义的:
Casting with <>
Using <> works the same as casting with as
.
实例
let x: unknown = 'hello';console.log((<string>x).length);
亲自试一试 »
这种类型的转换不适用于 TSX,例如在处理 React 文件时。
强制转换
要覆盖 TypeScript 在转换时可能抛出的类型错误,请先转换为 unknown
,然后再转换为目标类型。
实例
let x = 'hello';console.log(((x as unknown) as number).length); // x 实际上不是一个数字,所以这将返回 undefined 亲自试一试 »
TypeScript 练习
0 人点赞过