# 交叉类型

本节聚焦对类型求交集的运算,交叉类型

# 基础使用

交叉类型是对多个类型求取交集运算,这会使类型的值同时具有多个类型 的特征。

type BallSize = {
  name: string;
  size: string;
};
type BallColor = {
  name: string;
  color: string;
};

// 定义一个同时包含名字,尺寸,类型属性的对象类型
type BallSizeAndColor = BallSize & BallColor;

// 变量必须同时包含 size 和 color 属性
let ball: BallSizeAndColor;

// 合法
ball = {
  name: 'tennis',
  size: 'small',
  color: 'white'
};

// 报错,  缺少 color 属性
ball = {
  name: 'basketball',
  size: 'big'
};

// 报错, 缺少 size 属性
ball = {
  name: 'pingpong',
  color: 'yellow'
};

TIP

注意交叉类型是对类型求取交集而非值,所以变量的值是同时具备多个类型特征。不要错误的认为是对值求取交集。

# 总结

本节知识点如下:

  1. 采用 & 求取多个类型的交集,此时值必须同时满足多个类型的特征。