今天我们聊聊Typescript的内置工具类型,其中有两个类型颇为有意思。那就是 Pick (选取)
和 Omit (排除)
。
核心:Pick 与 Omit 从现有类型中得到可复用类型
Pick 作用?
从类型对象中选取
指定的属性类型
Omit 作用?
从类型对象中排除
指定的属性类型,得到剩余的
例1
type Person = {
name: string
age: number
gender: 0 | 1
}
// 取出Person中得name,age得到新的类型PickPerson
// type PickPerson = {
// name: string;
// age: number;
// }
type PickPerson = Pick<Person, 'name' | 'age'>
// 排除Person中得age,gender得到新的类型OmitPerson
// type OmitPerson = {
// name: string;
// }
type OmitPerson = Omit<Person, 'age' | 'gender'>
例2
export type User = {
// token令牌
token: string
// 用户ID
id: string
// 用户名称
account: string
// 手机号
mobile: string
// 头像
avatar: string
}
// 个人信息(在User的基础上排除'token'并添加其他)
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
}
}