- pick
pick就是从已有的对象选取部分key 组成新的对象。
type Pick<T, K extends keyof T> = {
[P in K]: T[P];
};
interface Person {
name: string;
age: number;
id: number;
sex: 0 | 1;
}
type Woman = Pick<Person, "name" | "id">;
// 此时 Woman 等效于 Female
interface Female {
name: string;
id: number;
}
2.omit
omit与pick相反,omit从一个类型中剔除一些keys
export interface Contact{
name: string; // 姓名
phone?: string; // 手机号
email: string; // 邮箱
avatar: string; // 头像
userid: string; // id
}
export type OmitEmailContact = Omit<Contact, 'email' >; OmitEmailContact{
name: string;
phone?: string;
avatar: string;
userid: string; }
3.Record Record 后面的泛型就是对象键和值的类型。
interface PageInfo {
title: string;
}
type Page = "home" | "about" | "contact";
const nav: Record<Page, PageInfo> = {
about: { title: "about" },
contact: { title: "contact" },
home: { title: "home" },
};