pick 和 omit TS内置类型

152 阅读1分钟
  • Pick 可以从一个对象类型中 取出某些属性

  • type Person = { name: string age: number } type PickPerson = Pick<Person, 'age'> // PickPerson === { age: string }

  • Omit 可以从一个对象类型中 排出某些属性

  • type Person = { name: string age: number } type OmitPerson = Omit<Person, 'age'> // OmitPerson === { name: string } 场景:

  • 有 User 对象类型,现在需要 UserInfo 类型,字段多一些

  • 使用 交叉类型 可以复用 User 类型,但是不需要 token 属性

-export type User = { token: string id: string account: string mobile: string avatar: string } type OmitUser = Omit<User, 'token'> export type UserInfo = OmitUser & { /** 关注 */ likeNumber: number /** 收藏 */ collectionNumber: number /** 积分 */ score: number /** 优惠券 */ couponNumber: number orderInfo: { /** 待付款 */ paidNumber: number /** 待发货 */ receivedNumber: number /** 待收货 */ shippedNumber: number /** 已完成 */ finishedNumber: number } }