类型断言用 as 或尖括号语法告诉编译器按某个类型处理,最典型的场景是联合类型收窄:把 unknown 或联合值断言成具体分支。框架中常见 as HTMLDivElement、as MouseEvent,用来补齐运行时对象的精确类型。它不改变运行时行为,只是覆盖编译器的推断结果。
断言要谨慎:它允许断言成完全错误的类型,编译器只在两个类型毫无重叠时报错。对 unknown 必须先断言或收窄才能使用。优先考虑类型守卫、泛型与函数重载,实在上下文不足再用 as,并且养成从 unknown 断言的习惯,而非对已声明类型强行改道。
const el = document.querySelector('#app') as HTMLDivElement; el.style.color = 'red'; function toNum(v: unknown): number { // unknown 必须先收窄或断言才能运算 return (v as number) * 2; } const n: number | string = '7'; console.log((n as number).toFixed());