面试题答案
一键面试- 类型断言(
as
或尖括号语法):- 类型断言是一种告诉编译器“相信我,我知道这个值的类型”的方式。在TypeScript中,
as
语法和尖括号语法在大多数情况下功能相同,但在JSX中只能使用as
语法。
- 类型断言是一种告诉编译器“相信我,我知道这个值的类型”的方式。在TypeScript中,
- 类型保护:
- 类型保护是一些表达式,它们在运行时检查类型,并缩小类型的范围。常见的类型保护有
typeof
、instanceof
、in
等。
- 类型保护是一些表达式,它们在运行时检查类型,并缩小类型的范围。常见的类型保护有
- 协同工作示例:
// 定义一个联合类型
function printValue(value: string | number) {
// 使用 typeof 类型保护
if (typeof value ==='string') {
console.log(value.length);
} else {
console.log(value.toFixed(2));
}
}
// 有时我们可能需要先进行类型断言
interface Animal {
name: string;
}
interface Dog extends Animal {
bark(): void;
}
function handleAnimal(animal: Animal) {
// 假设我们通过某种逻辑判断这个 animal 可能是 Dog
if ('bark' in animal) {
// 进行类型断言,将 animal 断言为 Dog 类型
const dog = animal as Dog;
dog.bark();
}
}
在上述代码中:
printValue
函数展示了使用typeof
类型保护来处理联合类型string | number
,确保在不同分支中能安全地调用对应类型的方法。handleAnimal
函数展示了如何先通过in
类型保护判断animal
可能是Dog
类型,然后使用类型断言将其断言为Dog
类型,进而安全地调用bark
方法。这样结合类型保护和类型断言,可以在复杂的TypeScript项目中确保类型安全。