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 提供了更大的灵活性和表达能力,使得开发者能够更好地处理各种复杂的类型情况。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· C#/.NET/.NET Core技术前沿周刊 | 第 29 期(2025年3.1-3.9)
· 从HTTP原因短语缺失研究HTTP/2和HTTP/3的设计差异