联合类型表示取值可以为多种类型中的一种,用|
分隔类型。
可以理解为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); // 5
myFavoriteNumber = 7;
console.log(myFavoriteNumber.length); // 编译时报错
# 类型“number”上不存在属性“length”。