联合类型与交叉类型
联合类型表示什么, 访问成员有什么限制?
- 含义: 取值是若干个类型之一, 写成
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;
- 与联合的关系: 联合是"或", 交叉是"且";
- 检查: 赋值时必须同时满足两个接口的要求;