TypeScript高级类型Readonly, Required,Partial, Pick, Record

以 Person 为例
interface Person {
    name: string;
    age?: number;
}
Partial

源码:

type Partial<T> = {
    [P in keyof T]?: T[P];
};

实例:

type Person2 = Partial<Person>;
// Person2 === {name?: string; age?: number}
Required

源码:

type Required<T> = {
    [P in keyof T]-?: T[P];
};

实例:

type Person3 = Required<Person>;
// Person3 === {name: string; age: number}
Readonly

源码:

type Readonly<T> = {
    readonly [P in keyof T]: T[P];
};

实例:

type Person4 = Readonly<Person>;
// Person4 === {readonly name: string; readonly age?: number}
Pick

源码:

type Pick<T, K extends keyof T> = {
    [P in K]: T[P];
};

实例:

type Person5 = Pick<Person, 'name'>;
// Person5 === {name: string}
Record

源码:

type Record<K extends keyof any, T> = {
    [P in K]: T;
};

实例:

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

推荐阅读更多精彩内容