注意: 如果您是 TypeScript 新手,请先查看我们的 TypeScript 入门 教程。
TypeScript 的并集(Union)和交集(Intersection)类型是一种组合多个数据类型的方式。它们有助于定义可以具有多种类型之一(并集)或必须满足所有类型(交集)的变量。
让我们详细了解一下并集和交集类型。
TypeScript 并集类型
并集类型允许一个变量成为多个指定类型之一。例如,让我们定义一个类型为并集的变量 value。
let value: string | number;
value = "hello"; // valid
value = 42; // also valid
在这里,value 是一个并集类型,它可以存储一个字符串或一个数字。请注意,我们使用了 | 符号来定义并集类型。
注意: 并集类型类似于说“一个变量可以是 A 或 B”。
常见问题
您也可以在函数参数中使用并集类型。例如,
function printId(id: number | string) {
console.log("ID:", id);
}
printId(101); // valid
printId("101A"); // valid
输出
ID: 101 ID: 101A
在这里,printId() 为其参数使用了并集类型。这允许 id 既可以是数字也可以是字符串。
TypeScript 交集类型
交集类型将多个类型合并为一个。该类型的某个值必须包含每个组合类型的所有属性。
您使用 & 符号来定义交集类型。例如,
type resultingType = typeA & typeB
在这里,resultingType 必须同时满足 typeA 和 typeB,这意味着它必须具有它们的所有必需属性。
示例:TypeScript 交集类型
type Name = { name: string };
type Age = { age: number };
type Person = Name & Age;
const person1: Person = {
name: "Alex",
age: 30
};
在这个例子中,Person 是通过组合 Name 和 Age 而形成的交集类型。这意味着 Person 类型的任何值都必须包含 name 和 age 属性。
因此,当我们定义 Person 类型的 person1 时,它必须包含这两个字段。
常见问题
您可以通过交叉两个或多个类型来构建复杂类型。例如,
type Name = { name: string };
type Age = { age: number };
type Address = { city: string };
type FullPerson = Name & Age & Address;
const person: FullPerson = {
name: "Daniel",
age: 25,
city: "New York"
};
在这个例子中,FullPerson 是 Name、Age 和 Address 的交集。所以,person 必须包含所有三个属性:name、age 和 city。
另请阅读