注意: 如果您是 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
。
另请阅读