TypeScript 中常用的内置工具类型:
一:操作接口类型
1. Partial:可以将类型的所有属性都变为可选
的
1.源码
type Partial<T> = {
[P in keyof T]?: T[P];
}
- keyof T:通过类型索引 keyof 的得到联合类型 ‘name’ | ‘age’ | ‘weight’
- P in keyof T 等同于 p in ‘name’ | ‘age’ | ‘weight’,相当于执行了一次 forEach 的逻辑,遍历 ‘name’ | ‘age’ | ‘weight’
2.使用
// 定义一个通用的 Person 类
interface Person {
name: string;
age?: number;
weight?: number;
}
type PartialPerson = Partial<Person>;
// 相当于
interface PartialPerson {
name?: string;
age?: number;
weight?: number;
}
2. Required:可以将类型的所有属性都变为必填
的(与 Partial 工具类型相反)
1.源码:映射类型在键值的后面使用了一个 - 符号,- 与 ? 组合起来表示去除类型的可选属性
,因此给定类型的所有属性都变为了必填。
type Required<T> = {
[P in keyof T]-?: T[P];
};
2.使用
type RequiredPerson = Required<Person>;
// 相当于
interface RequiredPerson {
name: string;
age: number;
weight: number;
}
3.Readonly:可以将类型的所有属性设为只读
,这意味着属性不可以被重新赋值
1.源码
type Readonly<T> = {
readonly [P in keyof T]: T[P];
};
2.使用
type ReadonlyPerson = Readonly<Person>;
// 相当于
interface ReadonlyPerson {
readonly name: string;
readonly age?: number;
readonly weight?: number;
}
4.Pick:可以从类型中选取出指定的键值,然后组成一个新的类型
1.源码:Pick工具类型接收了两个泛型参数:第一个 T 为给定的参数类型,而第二个参数为需要提取的键值 key。有了参数类型和需要提取的键值 ke