使用 as
类型断言方式
function getElement(): any {
// 这里模拟从 DOM 获取元素,实际可能是 document.getElementById 等操作
return document.createElement('input');
}
const inputElementAs: HTMLInputElement = getElement() as HTMLInputElement;
使用 <T>
类型断言方式
function getElement(): any {
// 这里模拟从 DOM 获取元素,实际可能是 document.getElementById 等操作
return document.createElement('input');
}
const inputElementAngle: HTMLInputElement = <HTMLInputElement>getElement();
异同点
- 相同点:两者的主要作用都是将
any
类型的值断言为指定的 HTMLInputElement
类型,让 TypeScript 编译器按照指定类型来处理,从而在后续代码中提供类型检查和智能提示。
- 不同点:
<T>
语法在 JSX 中会产生语法歧义,因为 JSX 也使用尖括号来表示元素标签。而 as
语法在任何场景下都能正常使用,所以在 TSX(TypeScript + JSX)项目中,只能使用 as
类型断言方式。在普通的 TypeScript 项目中,两种方式都可以使用,开发者可根据个人喜好选择。