TS 类型守卫:让代码更安全
学习 TypeScript 类型守卫,掌握 typeof、instanceof 和自定义守卫的使用。 · 难度:入门 · +15XP
类型守卫的概念
类型守卫是 TypeScript 中的一种运行时检查机制,用于在代码块中缩小变量的类型范围。它帮助我们更安全地操作联合类型或未知类型的数据。
常见的类型守卫
| 守卫方式 | 适用场景 |
|---|---|
| typeof | 基本类型(string, number, boolean 等) |
| instanceof | 类实例 |
| 自定义守卫 | 复杂逻辑或接口判断 |
代码示例
function printLength(value: string | number) {
if (typeof value === 'string') {
console.log(value.length); // 这里 value 是 string 类型
} else {
console.log(value.toFixed(2)); // 这里 value 是 number 类型
}
}
// 自定义守卫
interface Cat { meow(): void }
interface Dog { bark(): void }
function isCat(pet: Cat | Dog): pet is Cat {
return (pet as Cat).meow !== undefined;
}
function handlePet(pet: Cat | Dog) {
if (isCat(pet)) {
pet.meow();
} else {
pet.bark();
}
}
练习提示
尝试编写一个函数,接受 string | number | boolean 类型参数,使用类型守卫分别输出不同格式:字符串转大写、数字转二进制、布尔值转 '是' 或 '否'。