TypeScript 的联合类型、交叉类型、映射类型

当使用 TypeScript 时,联合类型、交叉类型和映射类型是常见的高级类型概念,它们提供了强大的工具来处理各种复杂的类型情况。

### 联合类型(Union Types):

联合类型允许一个值属于多个类型之一。使用 `|` 符号来表示联合类型。例如:

```typescript
let value: string | number;

value = "hello"; // 可以是字符串
value = 10; // 也可以是数字
```

在这个例子中,`value` 可以是 `string` 类型或 `number` 类型。

### 交叉类型(Intersection Types):

交叉类型允许将多个类型合并为一个类型。使用 `&` 符号来表示交叉类型。例如:

```typescript
interface A {
foo: number;
}

interface B {
bar: string;
}

let obj: A & B;

obj = { foo: 123, bar: "hello" }; // 必须同时包含 A 和 B 中的属性
```

在这个例子中,`obj` 必须同时包含 `A` 和 `B` 接口中定义的属性。

### 映射类型(Mapped Types):

映射类型允许根据现有类型创建新类型。它们以现有类型中的属性为基础,并使用映射函数转换它们。例如,`Partial<T>` 类型可以将所有属性从类型 `T` 中变为可选的:

```typescript
interface Person {
name: string;
age: number;
}

type PartialPerson = Partial<Person>;

// 等同于
// interface PartialPerson {
// name?: string;
// age?: number;
// }
```

在这个例子中,`Partial<T>` 接受一个类型 `T`,并将其所有属性变为可选的。

这些高级类型为 TypeScript 提供了更大的灵活性和表达能力,使得开发者能够更好地处理各种复杂的类型情况。

posted @   炽橙子  阅读(29)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· C#/.NET/.NET Core技术前沿周刊 | 第 29 期(2025年3.1-3.9)
· 从HTTP原因短语缺失研究HTTP/2和HTTP/3的设计差异
点击右上角即可分享
微信分享提示