面试题答案
一键面试类型断言的概念
类型断言(Type Assertion)是 TypeScript 中一种手动指定类型的方式,允许开发者告诉编译器某个值的类型,尽管编译器可能无法自动推断出该类型。它就像是一种类型的强制转换,但并不会真的改变值的运行时类型,只是在编译阶段起作用,帮助编译器进行更准确的类型检查。
常见应用场景
- 将
any
类型转换为更具体的类型 当你从一个动态数据源(如JSON.parse
)获取数据,TypeScript 会将其推断为any
类型。这时可以使用类型断言将其转换为更具体的类型。
let jsonResult: any = '{"name":"John","age":30}';
// 使用类型断言将 any 类型转换为 { name: string; age: number } 类型
let user: { name: string; age: number } = jsonResult as { name: string; age: number };
console.log(user.name);
- 绕过类型检查访问特定属性或方法
在某些情况下,你可能知道某个值实际上具有特定的属性或方法,尽管 TypeScript 无法直接推断出来。例如,在使用
document.getElementById
获取 HTML 元素时,TypeScript 只知道返回的是HTMLElement
,但你可能知道它实际上是一个HTMLInputElement
。
let input = document.getElementById('myInput') as HTMLInputElement;
input.value = 'Some value';
- 联合类型中明确类型 当你有一个联合类型,并且你确定在某个特定的代码块中,变量的类型是联合类型中的某一种时,可以使用类型断言。
let value: string | number = 123;
// 这里明确 value 是 number 类型
let numValue: number = value as number;
console.log(numValue.toFixed(2));