原始类型,比如通讯录Contact
export interface Contact{
name: string; // 姓名
phone?: string; // 手机号
email: string; // 邮箱
avatar: string; // 头像
userid: string; // id
}
(1)新增字段
export interface ContactAddress extends Contact {
address: string;
}
(2)Omit使用
export type OmitEmailAvatarContact = Omit<Contact, 'email' | 'avatar'>;
// 也就是等于
OmitEmailAvatarContact {
name: string;
phone?: string;
userid: string;
}
(3)Pick使用
export interface ContactPick extends Pick<Contact, 'name' | 'phone'> {}
ContactPick {
name: string;
phone?: string;
}
(4)统一给类型加上指定类型( 区别于简单的扩展字段),函数化
export type WithId<T, P = string> = T & { id: P };
export interface ContactWithId = WithId<Contact>
(5)Partial将类型中所有选项变为可选,即加上?(官方提供)
Required将类型中所有选项变为必选,去除所有?(官方提供)
export interface PartialContact= Partial<Contact>
PartialContact{
name?: string; // 姓名
phone?: string; // 手机号
email?: string; // 邮箱
avatar?: string; // 头像
userid?: string; // id
}
export interface RequiredContact= Required<Contact>
RequiredContact{
name: string; // 姓名
phone: string; // 手机号
email: string; // 邮箱
avatar: string; // 头像
userid: string; // id
}