typescript 中的映射类型
typescript 中的映射类型
程序员朱永胜映射类型简介
映射类型是 TypeScript 提供的一种机制,用于基于现有类型创建新的类型。它允许你通过对某一类型的属性进行变换来创建新的类型。
背景
在大型应用程序中,经常需要对某些类型进行变换或扩展。映射类型使得这种变换更为简便和可维护。
基本语法
映射类型使用一种特定的语法 [K in keyof T]: U
,其中 T
是对象或接口,K
是其键名集合,而 U
是新的属性值类型。
1 | type Readonly<T> = { |
参数说明:
T
: 原始对象或接口。K in keyof T
: 遍历T
的所有键。readonly
: 将所有属性设为只读。
常见映射类型
Readonly
将对象所有属性变为只读。
1
2
3type Readonly<T> = {
readonly [K in keyof T]: T[K];
};Partial
将对象所有属性设为可选。
1
2
3type Partial<T> = {
[K in keyof T]?: T[K];
};Required
将对象所有可选属性设为必需。
1
2
3type Required<T> = {
[K in keyof T]-?: T[K];
};Record
创建一个键值对的映射。
1
2
3type Record<K extends keyof any, T> = {
[P in K]: T;
};
应用场景
- 创建 API 响应模型。
- 在 Redux 中处理状态。
- 类型保护和验证等。
对比示例
功能 | 映射前 | 映射后 (Readonly) |
---|---|---|
只读属性 | { name: string } |
{ readonly name: string } |
注意事项
- 映射类型不改变原始对象,只生成新类型。
- 可以结合条件类型、泛型等更灵活运用。