Appearance
联合类型
联合类型表示取值可以是多种类型的一种。
typescript
// 允许 stringOrNumber 的类型是 string 或者 number,但不能是其他类型。
let stringOrNumber: string | number
stringOrNumber = 7 // Ok
stringOrNumber = 'seven' // Ok
// 没有初始化时,只能调用共同的方法。访问联合类型的属性或方法
当 TypeScript 不确定一个联合类型的变量到底是哪个类型的时候,我们只能访问此联合类型的所有类型里共有的属性或方法:
typescript
const foo = function (stringOrNumber: string | number): number {
return stringOrNumber.length // Error,类型 number 上不存在 length 属性
}
const foo = function (stringOrNumber: string | number) {
return stringOrNumber.toString() // Ok
}联合类型的变量在被赋值的时候,会根据类型推论的规则推断出一个类型:
typescript
let stringOrNumber: string | number;
stringOrNumber = 'seven';
console.log(stringOrNumber.length); // Ok
stringOrNumber = 7;
console.log(stringOrNumber.length); // Error