1. // 比如有一个联系人列表,列表里面是一个Concat json 对象
    2. // 定义一个 Contact 接口
    3. export interface Contact{
    4. name: string; // 姓名
    5. phone?: string; // 手机号
    6. email: string; // 邮箱
    7. avatar: string; // 头像
    8. userid: string; // id
    9. }
    10. // 1. Omit去除类型中某些项(官方提供)
    11. /**
    12. 可以看出需Omit要两个参数,Omit<type, string1 | string2>:
    13. 参数:第一个为继承的type类型,第二个为想要的key的字符串,多个字符串用|分开
    14. 使用也很简单:
    15. */
    16. // 去除单个,原始类型为联系人列表,新数据数据为没有邮箱项的联系人列表
    17. export type OmitEmailContact = Omit<Contact, 'email' >;
    18. // 返回会如下:
    19. OmitEmailContact{
    20. name: string;
    21. phone?: string;
    22. avatar: string;
    23. userid: string;
    24. }
    25. // 去除多个,原始类型为联系人列表,新数据数据为没有邮箱项与头像的联系人列表
    26. export type OmitEmailAvatarContact = Omit<Contact, 'email' | 'avatar'>;
    27. OmitEmailAvatarContact {
    28. name: string;
    29. phone?: string;
    30. userid: string;
    31. }
    32. // 2.Pick选取类型中指定类型(官方提供)
    33. /*
    34. 现在联系人列表只要姓名电话即可
    35. */
    36. export interface ContactPick extends Pick<Contact, 'name' | 'phone'>;
    37. ContactPick {
    38. name: string;
    39. phone?: string;
    40. }
    41. // 3. Partial将类型中所有选项变为可选,即加上 ?(官方提供)
    42. export interface PartialContact= Partial<Contact>
    43. PartialContact{
    44. name?: string; // 姓名
    45. phone?: string; // 手机号
    46. email?: string; // 邮箱
    47. avatar?: string; // 头像
    48. userid?: string; // id
    49. }
    50. // 4. Required将类型中所有选项变为必选,去除所有?(官方提供)
    51. export interface RequiredContact= Required<Contact>;
    52. RequiredContact{
    53. name: string; // 姓名
    54. phone: string; // 手机号
    55. email: string; // 邮箱
    56. avatar: string; // 头像
    57. userid: string; // id
    58. }