场景
- 调用现有 JavaScript 库:当使用一些未提供 TypeScript 类型定义的 JavaScript 库时,库返回的值类型可能不明确,此时可用类型断言。例如使用 jQuery,其
$
函数返回值类型若 TypeScript 不能准确推断,就需断言。
- 处理联合类型:在联合类型中,当确定变量在某个特定时刻的类型时。比如有联合类型
let value: string | number
,若在某个逻辑分支中确定 value
是 string
类型,就可断言。
- DOM 操作:获取 DOM 元素时,TypeScript 可能无法精确知晓元素的类型。例如通过
document.getElementById
获取元素,返回值类型为 HTMLElement | null
,若确定元素存在且是特定类型(如 HTMLInputElement
),可断言。
示例
- 调用现有 JavaScript 库示例:
// 引入 jQuery
declare const $: any;
// 假设此处 $ 没有准确类型定义
// 使用类型断言
const myElement = $('#myElement') as HTMLDivElement;
// 断言返回值是 HTMLDivElement 类型,这样就可调用该类型的方法和属性
myElement.innerHTML = 'Hello';
- 处理联合类型示例:
let value: string | number;
value = '123';
if (typeof value ==='string') {
const strValue = value as string;
// 断言 value 是 string 类型
console.log(strValue.length);
}
- DOM 操作示例:
const input = document.getElementById('input') as HTMLInputElement;
// 断言获取的元素是 HTMLInputElement 类型
input.value = 'TypeScript';