联合类型表示取值可以为多种类型中的一种,用|分隔类型。
可以理解为Js中的||符号,只要赋值的类型满足联合类型中的其中一种即可。
let myFavoriteNumber: string | number;myFavoriteNumber = 'seven';myFavoriteNumber = 7;
let myFavoriteNumber: string | number;myFavoriteNumber = true;# 不能将类型“boolean”分配给类型“string | number”。
当Ts不确定变量到底是联合类型的哪一个类型时,我们只能访问该联合类型中所有类型的公共方法\属性。
function getString(something: string | number): string {return something.toString();}
function getLength(something: string | number): number {return something.length;}# 类型“string | number”上不存在属性“length”。 ==> 对应入参# 类型“number”上不存在属性“length”。 ==> 对应出参
同样的,联合类型的变量在赋值的过程中,会根据类型推论的规则推断对应的类型:
let myFavoriteNumber: string | number;myFavoriteNumber = 'seven';console.log(myFavoriteNumber.length); // 5myFavoriteNumber = 7;console.log(myFavoriteNumber.length); // 编译时报错# 类型“number”上不存在属性“length”。
