TS - Pick使用 - Omit使用

201 阅读1分钟

Pick - 取一个定义的类型中的某些子类型进行返回,组成一个新的类型

type Pick<T, K extends keyof T> = { [P in K]: T[P]; };
//泛型
//T 目标类型
//K extends keyof T 约束为只能只能放入T类型中的某些子类型(keyof取出T中的属性,返回一个联合类型)

//返回类型
//[P in K]遍历类型k,生成多个T对应的类型属性名,
//T[P]对应的改属性的类型
//原类型
interface Person {
  name: string;
  age: number;
  id: number;
  sex: 0 | 1;
}
//取出其中的某几个返回一个对应的新类型
type Woman = Pick<Person, "name" | "id">;
//新类型 这就是新返回出来的类型
interface Woman {
  name: string;
  id: number;
}

Omit 和Pick相反 是去除某些其中的类型,返回剩下的类型(Pick是取其中的某些类型)

type Omit<T, K extends string | number | symbol> = { [P in Exclude<keyof T, K>]: T[P]; };