Skip to content

TS高级 - 联合类型

专题简介

联合类型(Union Types)表示取值可以为多种类型中的一种。

ts
let user: string | number
user = 123 // 编译OK
user = 'abc' // 编译OK
user = true // 编译报错:不能将类型“boolean”分配给类型“string | number”。

如果一个值是联合类型,我们只能访问此联合类型的所有类型里共有的成员。

ts
interface Bird {
  fly()
  layEggs() // 共有成员
}

interface Fish {
  swim()
  layEggs() // 共有成员
}

function getSmallPet(): Fish | Bird {
  // ...
}

let pet = getSmallPet()
pet.layEggs() // okay
pet.swim() // errors

注意区分

联合类型 与 交叉类型。