MST

星途 面试题库

面试题:TypeScript基于映射类型和条件类型的复杂类型推导

有一个类型`Info`,它可能包含属性`id: number`、`name: string`、`isActive: boolean`。请编写一个类型`OptionalKeysToUndefined`,使用映射类型和条件类型,将`Info`中可选属性的值类型变为`undefined`。例如,如果`Info`中的`name`是可选的,那么在`OptionalKeysToUndefined<Info>`中,`name`的类型就变为`string | undefined`。
18.8万 热度难度
前端开发TypeScript

知识考点

AI 面试

面试题答案

一键面试
type OptionalKeysToUndefined<T> = {
    [P in keyof T]: T extends { [K in P]: T[P] }
      ? P extends RequiredKeys<T>
          ? T[P]
           : T[P] | undefined
        : never;
};

type RequiredKeys<T> = {
    [P in keyof T]-?: {} extends { [K in P]: T[P] } ? never : P;
}[keyof T];