Skip to content

TS高级 - 联合类型

专题简介

联合类型(Union Types)表示取值可以为多种类型中的一种。

ts
let user: string | number;
user = 123;         // 编译OK
user = 'abc';       // 编译OK
user = true;        // 编译报错:不能将类型“boolean”分配给类型“string | number”。

如果一个值是联合类型,我们只能访问此联合类型的所有类型里共有的成员。

ts
interface Bird {
    fly();
    layEggs();      // 共有成员
}

interface Fish {
    swim();
    layEggs();      // 共有成员
}

function getSmallPet(): Fish | Bird {
    // ...
}

let pet = getSmallPet();
pet.layEggs();      // okay
pet.swim();         // errors

注意区分

联合类型 与 交叉类型。