1.联合类型
联合类型(Union Types)表示取值可以为多种类型中的一种。
联合类型使用 | 分隔每个类型。
上图代码中我们可以看出定义的变量unionType我们指定类型为字符串或者是数字类型,分别赋值,打印出字符串“six"和数字6,这就是联合类型;
而当我们把变量unionType赋值为boolean类型是就会报错;
2.访问联合类型的属性或方法
当一个联合类型的变量不确定到底是哪个类型的时候,我们只能访问此联合类型的所有类型里共有的属性或方法。
上图getReturn方法中,参数something为string类型或者number类型联合类型的参数,:number表示return返回的值为number类型的,但是我们发现当执行这个函数时报错了,原因是length是string的一个属性,却不是number类型的属性,而我们应该返回的是这两个类型的共有属性,可以修改成如下图:
我们可以把数字类型的转化成string类型的,然后return出一个字符串类型的返回值。
联合类型的变量在被赋值的时候,会根据类型推论的规则推断出一个类型:
let myNumber: string | number;
myNumber = 'seven';
console.log(myNumber.length); // 5
myNumber = 7;
console.log(myNumber.length); // 编译时报错
// index.ts(5,30): error TS2339: Property 'length' does not exist on type 'number'.