联合类型与交叉类型 #
联合类型(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 };
最佳实践 #
- 结合类型守卫处理联合类型。
- 使用交叉类型扩展接口。
- 避免过度复杂的联合或交叉类型,以保持可读性。