面试题答案
一键面试Pick工具类型实现
Pick
工具类型用于从一个类型中选择部分属性,生成一个新的类型。其实现如下:
type Pick<T, K extends keyof T> = {
[P in K]: T[P];
};
Omit工具类型实现
Omit
工具类型用于从一个类型中排除部分属性,生成一个新的类型。其实现如下:
type Omit<T, K extends keyof any> = Pick<T, Exclude<keyof T, K>>;
联合使用场景及示例
假设我们有一个User
类型,包含name
、age
、email
和phone
属性。现在我们要创建一个新类型,该类型包含除phone
外的所有属性,并且还要基于这个新类型再创建一个仅包含name
和email
的类型。
// 定义User类型
type User = {
name: string;
age: number;
email: string;
phone: string;
};
// 使用Omit排除phone属性
type UserWithoutPhone = Omit<User, 'phone'>;
// 使用Pick从UserWithoutPhone中选择name和email属性
type UserBasicInfo = Pick<UserWithoutPhone, 'name' | 'email'>;
在上述代码中,先使用Omit
从User
类型中排除phone
属性得到UserWithoutPhone
类型,然后再使用Pick
从UserWithoutPhone
类型中选择name
和email
属性得到UserBasicInfo
类型,这就展示了Pick
和Omit
联合使用满足特定类型转换需求的过程。