MST

星途 面试题库

面试题:TypeScript工具类型Pick和Omit的联合使用场景及实现

描述在何种实际场景下会联合使用Pick和Omit工具类型,并分别实现这两个工具类型,且展示如何联合使用它们来满足特定类型转换需求。
42.5万 热度难度
前端开发TypeScript

知识考点

AI 面试

面试题答案

一键面试

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类型,包含nameageemailphone属性。现在我们要创建一个新类型,该类型包含除phone外的所有属性,并且还要基于这个新类型再创建一个仅包含nameemail的类型。

// 定义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'>;

在上述代码中,先使用OmitUser类型中排除phone属性得到UserWithoutPhone类型,然后再使用PickUserWithoutPhone类型中选择nameemail属性得到UserBasicInfo类型,这就展示了PickOmit联合使用满足特定类型转换需求的过程。