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<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>;

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

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。