Skip to content

交叉类型

接口允许我们通过扩展其他类型建立起新的类型。TypeScript提供了另一种结构,称为交叉类型,主要用于组合现有的对象类型。

交叉类型是用 & 操作符定义的。

typescript
interface Colorful { 
  color: string; 
}
interface Circle { 
  radius: number; 
}

type ColorfulCircle = Colorful & Circle; 

const cc: ColorfulCircle = { 
  color: "red", 
  radius: 42, 
}

在这里,我们将 Colorful 和 Circle 相交,产生了一个新的类型,它拥有 Colorful 和 Circle 的所有成员。

typescript
function draw(circle: Colorful & Circle) { 
  console.log(`Color was ${circle.color}`); 
  console.log(`Radius was ${circle.radius}`); 
}

// 正确 
draw({ color: "blue", radius: 42 }); 

// 错误 
draw({ color: "red", raidus: 42 });