联合类型表示取值可以为多种类型中的一种,用|分隔类型。
    可以理解为Js中的||符号,只要赋值的类型满足联合类型中的其中一种即可。

    1. let myFavoriteNumber: string | number;
    2. myFavoriteNumber = 'seven';
    3. myFavoriteNumber = 7;
    1. let myFavoriteNumber: string | number;
    2. myFavoriteNumber = true;
    3. # 不能将类型“boolean”分配给类型“string | number”。

    当Ts不确定变量到底是联合类型的哪一个类型时,我们只能访问该联合类型中所有类型的公共方法\属性。

    1. function getString(something: string | number): string {
    2. return something.toString();
    3. }
    1. function getLength(something: string | number): number {
    2. return something.length;
    3. }
    4. # 类型“string | number”上不存在属性“length”。 ==> 对应入参
    5. # 类型“number”上不存在属性“length”。 ==> 对应出参

    同样的,联合类型的变量在赋值的过程中,会根据类型推论的规则推断对应的类型:

    1. let myFavoriteNumber: string | number;
    2. myFavoriteNumber = 'seven';
    3. console.log(myFavoriteNumber.length); // 5
    4. myFavoriteNumber = 7;
    5. console.log(myFavoriteNumber.length); // 编译时报错
    6. # 类型“number”上不存在属性“length”。