14 联合类型与交叉类型

联合类型与交叉类型 #

联合类型(Union Type)允许一个变量为多种类型之一,交叉类型(Intersection Type)用于组合多个类型。

基本概念 #

联合类型使用 | 分隔类型,表示值可以是其中任一类型。交叉类型使用 & 组合类型,表示值必须满足所有类型。

使用场景 #

  • 处理可能为多种类型的值,如函数参数。
  • 扩展现有类型,创建新类型。
  • 在类型守卫中缩小联合类型范围。

示例代码 #

联合类型示例:

let value: string | number;
value = "hello";
value = 123;

交叉类型示例:

interface A { a: string; }
interface B { b: number; }
let obj: A & B = { a: "foo", b: 42 };

最佳实践 #

  • 结合类型守卫处理联合类型。
  • 使用交叉类型扩展接口。
  • 避免过度复杂的联合或交叉类型,以保持可读性。