MST

星途 面试题库

面试题:TypeScript类型断言的基础应用

请描述TypeScript中类型断言的两种主要语法形式,并举例说明在什么场景下会使用类型断言来解决类型相关的问题。
23.8万 热度难度
前端开发TypeScript

知识考点

AI 面试

面试题答案

一键面试

两种主要语法形式

  1. 尖括号语法(<类型>值) 例如:
let someValue: any = "this is a string";
let strLength: number = (<string>someValue).length;
  1. as语法(值 as 类型) 例如:
let someValue: any = "this is a string";
let strLength: number = (someValue as string).length;

使用场景

  1. 绕过类型检查:当你明确知道一个值的真实类型,但TypeScript编译器无法自动推断时。比如从document.getElementById获取的元素,返回类型是HTMLElement | null,如果你确定元素存在,可以使用类型断言。
let myDiv = document.getElementById('myDiv');
if (myDiv) {
    let divWidth = (myDiv as HTMLDivElement).offsetWidth;
}
  1. 泛型场景:在泛型函数中,当你需要特定类型的操作,但泛型类型不能直接支持时。
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