TS 类型守卫:让类型更安全
学习如何使用 typeof、instanceof 和自定义类型守卫精确控制类型流。 · 难度:入门 · +15XP
类型守卫的概念
类型守卫是 TypeScript 在运行时检查变量类型的一种表达式,它能在代码块中缩小类型范围,从而安全地访问特定类型的属性和方法。类型守卫的核心价值在于将静态类型检查与动态运行时行为结合,减少类型断言带来的风险。
常见的类型守卫方式
| 守卫方式 | 适用场景 |
|---|---|
| typeof | 基本类型(string、number、boolean等) |
| instanceof | 类实例 |
| in | 对象属性是否存在 |
| 自定义守卫 | 复杂类型判断 |
代码示例
function isString(value: unknown): value is string { return typeof value === 'string'; } function process(input: string | number) { if (isString(input)) { console.log(input.toUpperCase()); } else { console.log(input.toFixed(2)); } }练习提示:尝试编写一个自定义类型守卫,判断一个对象是否具有 'name' 和 'age' 属性,并返回该对象为 Person 类型。