TypeScript 并集和交集类型

注意: 如果您是 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 必须同时满足 typeAtypeB,这意味着它必须具有它们的所有必需属性。


示例:TypeScript 交集类型

type Name = { name: string };
type Age = { age: number };

type Person = Name & Age;

const person1: Person = {
  name: "Alex",
  age: 30
};

在这个例子中,Person 是通过组合 NameAge 而形成的交集类型。这意味着 Person 类型的任何值都必须包含 nameage 属性。

因此,当我们定义 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"
};

在这个例子中,FullPersonNameAgeAddress 的交集。所以,person 必须包含所有三个属性:nameagecity


另请阅读

你觉得这篇文章有帮助吗?

我们的高级学习平台,凭借十多年的经验和数千条反馈创建。

以前所未有的方式学习和提高您的编程技能。

试用 Programiz PRO
  • 交互式课程
  • 证书
  • AI 帮助
  • 2000+ 挑战