Skip to content

联合类型

联合类型表示取值可以是多种类型的一种。

typescript
// 允许 stringOrNumber 的类型是 string 或者 number,但不能是其他类型。
let stringOrNumber: string | number
stringOrNumber = 7 // Ok
stringOrNumber = 'seven' // Ok

// 没有初始化时,只能调用共同的方法。

访问联合类型的属性或方法

当 TypeScript 不确定一个联合类型的变量到底是哪个类型的时候,我们只能访问此联合类型的所有类型里共有的属性或方法:

typescript
const foo = function (stringOrNumber: string | number): number {
    return stringOrNumber.length // Error,类型 number 上不存在 length 属性
}

const foo = function (stringOrNumber: string | number) {
    return stringOrNumber.toString() // Ok
}

联合类型的变量在被赋值的时候,会根据类型推论的规则推断出一个类型:

typescript
let stringOrNumber: string | number;
stringOrNumber = 'seven';
console.log(stringOrNumber.length); // Ok
stringOrNumber = 7;
console.log(stringOrNumber.length); // Error