导航
×
   ❮   
HTML CSS JavaScript PHP Python C C++ Go Sass W3C Colors TypeScript ECMS

TypeScript 类型断言


在处理类型时,有时需要覆盖变量的类型,例如当库提供了不正确的类型时。

类型断言是覆盖类型的一种过程。


使用 as 进行类型断言

断言变量的一种直接方法是使用 as 关键字,它将直接更改给定变量的类型。

实例

let x: unknown = 'hello';
console.log((x as string).length);
亲自试一试 »

类型断言实际上不会改变变量中的数据类型,例如,以下代码将无法按预期工作,因为变量 x 仍然是一个数字。

let x: unknown = 4;
console.log((x as string).length); // 打印 undefined,因为数字没有 length 属性

TypeScript 仍然会尝试对断言进行类型检查,以防止出现看似不正确的断言,例如,以下代码将抛出类型错误,因为 TypeScript 知道将字符串断言为数字是没有意义的,除非进行数据转换。

console.log((4 as string).length); // 错误:类型“number”到类型“string”的转换可能是一个错误,因为两种类型没有足够的重叠。如果这是故意的,请先将表达式转换为“unknown”。
下方的“强制断言”部分将介绍如何覆盖此限制。

使用 <> 进行类型断言

使用 <> 进行类型断言与使用 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
亲自试一试 »

Copyright ©2026 蒙ICP备2026009383号 All Rights Reserved 提供的内容仅用于学习和测试,不保证内容的正确性。