Typescript 基础
2021-12-23 16:10:03

TS 联合类型

参考文档:union types

简单联合类型

联合类型弱化了类型约束,它可以指定一个变量的类型的或关系

// 用或符号声明联合类型
// 则这个变量既可以是 number。也可以是 string。
let numberOrString: number | string;

// 联合类型也导致了 TS 类型检查的退化!
// 当 TypeScript 不能够确定一个联合类型的变量到底是哪个类型的时候,
// 我们只能访问此联合类型的所有类型里共有的属性或方法:
numberOrString.length;
numberOrString.toString();

// 联合类型可以一直叠加
let manyTypes: number | string | boolean // | ...

联合类型数组

联合类型可以和数组结合使用。这种用法和前面提到的元组容易混淆,联合类型数组只约束数组中的元素类型,而元组不仅仅约束元素类型,也约束元素的顺序和个数。下面用一个简单的例子来区分它们:

// 声明一个元组
let tuple: [number, string];

// 声明一个联合类型数组
let unoinArray: (number | string)[];

x = [1, 'a']; // ok
x = [1, 'a', 'b', 'c']; // x
y = [1, 'a', 'b', 'c']; // ok