Typescript - 映射类型

映射类型

现有类型如下

interface Person {
    name: string;
    age: number;
}

一个常见的任务是将一个已知的类型每个属性都变为可选的,或者是想要某一类型的只读版本如下:

interface PersonPartial {
    name?: string;
    age?: number;
}

interface PersonReadonly {
    readonly name: string;
    readonly age: number;
}

TypeScript提供了从旧类型中创建新类型的一种方式 — 映射类型。 在映射类型里,新类型以相同的形式去转换旧类型里每个属性。 例如,你可以令每个属性成为 readonly类型或可选的。 下面是一些例子:

type Readonly = {
    readonly [P in keyof T]: T[P];
}
type Partial = {
    [P in keyof T]?: T[P];
}

使用的时候像这样

type PersonPartial = Partial;
type ReadonlyPerson = Readonly;

这样我们就可以简单的转换成某个特定需求的类型了

你可能感兴趣的:(Typescript - 映射类型)