MST

星途 面试题库

面试题:TypeScript 映射类型结合条件类型处理复杂对象

有一个类型 `User` 定义如下:`type User = { name: string; age: number; isAdmin: boolean; hobbies: string[] }`。请编写一个 `FilterOptional` 类型,它接受一个对象类型并返回移除所有可选属性后的类型。例如,`FilterOptional<User>` 应返回 `{ name: string; age: number; isAdmin: boolean; hobbies: string[] }` (假设 `User` 类型中属性都是必选的,仅为示例)。然后,再编写一个 `TransformToNullable` 类型,它接受一个对象类型,将所有属性转换为可选且值类型为原类型的 `null` 或原类型,例如 `TransformToNullable<User>` 应得到 `{ name: string | null; age: number | null; isAdmin: boolean | null; hobbies: string[] | null }`。需使用映射类型和条件类型实现。
35.3万 热度难度
前端开发TypeScript

知识考点

AI 面试

面试题答案

一键面试
type FilterOptional<T> = {
    [K in keyof T as {} extends Pick<T, K> ? never : K]: T[K];
};

type TransformToNullable<T> = {
    [K in keyof T]?: T[K] | null;
};

type User = { name: string; age: number; isAdmin: boolean; hobbies: string[] };

type FilteredUser = FilterOptional<User>;
type NullableUser = TransformToNullable<User>;