TypeScript里常用的工具类型
Favori,
图:Amrit Pal Singh
使属性变为可选
type PartialByKeys<T, K extends keyof T> = {
[P in K]?: T[P];
} & Pick<T, Exclude<keyof T, K>>;
使属性变为必填
type RequiredByKeys<T, K extends keyof T> = {
[P in K]-?: T[P];
} & Omit<T, K>;
判断类型是否是另一个类型的子类型
type SubtypeOf<T, U> = T extends U ? true : false;
提取 interface 中非函数类型的名
type NonFunctionPropertyNames<T> = {
[K in keyof T]:T[K] extends Function ? never : K;
}[keyof T];
提取 interface 中非函数类型的属性
type NonFunctionProperties<T> = Pick<T, NonFunctionPropertyNames<T>>;