两种主要语法形式
- 尖括号语法:
(<类型>值)
例如:
let someValue: any = "this is a string";
let strLength: number = (<string>someValue).length;
- as语法:
(值 as 类型)
例如:
let someValue: any = "this is a string";
let strLength: number = (someValue as string).length;
使用场景
- 绕过类型检查:当你明确知道一个值的真实类型,但TypeScript编译器无法自动推断时。比如从
document.getElementById
获取的元素,返回类型是HTMLElement | null
,如果你确定元素存在,可以使用类型断言。
let myDiv = document.getElementById('myDiv');
if (myDiv) {
let divWidth = (myDiv as HTMLDivElement).offsetWidth;
}
- 泛型场景:在泛型函数中,当你需要特定类型的操作,但泛型类型不能直接支持时。
function getProperty<T, K extends keyof T>(obj: T, key: K) {
return obj[key];
}
let x = { a: 1, b: 2, c: 3 };
let prop = getProperty(x, 'a');
let numProp = prop as number; // 这里使用类型断言,因为getProperty返回类型是T[K],需要明确为number