ts 可以使用泛型来做类型映射,将对象或数组中类型转换为另一个类型。
例如:定义一个类型
interface Student {
name: string;
age: number;
}
- 把一个类型的每个属性都变为可空的
type Nullable<T> = {
[p in keyof T]: T[P] | null;
};
type NullableStudent = Nullable<Student>;
- 把一个类型的每个属性都变为只读的
//定义readonly映射
type Readonly<T> = {
readonly [P in keyof T]: T[P];
};
type ReadonlyStudent = Readonly<Student>;
- 把一个类型的属性都变为可选的
type Partical<T> = {
[P in keyof T]?: T[P];
};
type ParticalStudent = Partical<Student>;
- 把一个类型的每个项都变为 Promise
//定义toPromise映射
type ToPromise<T> = { [K in keyof T]: Promise<T[K]> };
type Coordinate = [number, number];
type PromiseCoordinate = ToPromise<Coordinate>; // [Promise<number>, Promise<number>]