TypeScript 联合类型
联合类型(Union Types)是 TypeScript 中一个强大的特性,它允许一个变量可以是多种类型之一。我们使用竖线(|)来分隔每种类型。
什么是联合类型?
当你希望一个变量、函数参数或对象属性可以接受不同类型的值时,联合类型就非常有用。
基础示例
这个例子中,value 变量既可以是一个 string,也可以是一个 number。
使用联合类型
当一个值的类型是联合类型时,我们只能访问这个联合类型中所有类型都共有的成员。
类型收窄 (Type Narrowing)
为了能够使用特定类型的方法或属性,我们需要告诉 TypeScript 当前变量的具体类型。这个过程称为“类型收窄”或“类型守卫”(Type Guards)。
有多种方法可以实现类型收窄:
1. typeof 类型守卫
对于基本类型,typeof 是最常见的类型守卫。
2. instanceof 类型守卫
instanceof 用于检查一个实例是否属于某个类。
3. in 操作符类型守卫
in 操作符可以检查一个对象是否拥有某个属性。
字面量联合类型
联合类型不仅可以用于类型,还可以用于具体的字面量值。这可以用来限制一个变量只能取几个特定的字符串或数字值。
这种模式在 API 设计中非常有用,可以提供类似枚举(Enum)的功能,但更轻量。