跳到主要内容

联合类型与交叉类型

联合类型表示什么, 访问成员有什么限制?​

  • 含义: 取值是若干个类型之一, 写成 A | B;
  • 赋值: 只要能匹配其中一个成员类型即可;
let myFavoriteNumber: string | number;
myFavoriteNumber = "seven";
myFavoriteNumber = 7;
  • 成员访问: 只能使用所有成员共有的属性与方法;
  • 原因: 赋值时无法确定当前是哪一个成员类型, 需要先用类型守卫收窄, 见 类型守卫;

交叉类型如何合并类型?​

  • 含义: 同时具有多个类型的全部成员, 写成 A & B;
  • 典型用途: 把多个接口叠加成一个更完整的响应类型;
interface ErrorHandling {
success: boolean;
error?: { message: string };
}

interface ArtworksData {
artworks: { title: string }[];
}

type ArtworksResponse = ArtworksData & ErrorHandling;
  • 与联合的关系: 联合是"或", 交叉是"且";
  • 检查: 赋值时必须同时满足两个接口的要求;