映射类型
现有类型如下
interface Person {
name: string;
age: number;
}
一个常见的任务是将一个已知的类型每个属性都变为可选的,或者是想要某一类型的只读版本如下:
interface PersonPartial {
name?: string;
age?: number;
}
interface PersonReadonly {
readonly name: string;
readonly age: number;
}
TypeScript提供了从旧类型中创建新类型的一种方式 — 映射类型。 在映射类型里,新类型以相同的形式去转换旧类型里每个属性。 例如,你可以令每个属性成为 readonly类型或可选的。 下面是一些例子:
type Readonly<T> = {
readonly [P in keyof T]: T[P];
}
type Partial<T> = {
[P in keyof T]?: T[P];
}
使用的时候像这样
type PersonPartial = Partial<Person>;
type ReadonlyPerson = Readonly<Person>;
这样我们就可以简单的转换成某个特定需求的类型了