MST

星途 面试题库

面试题:深度解析TypeScript类型查询操作符在复杂泛型场景中的递归应用

编写一个类型 `DeepPartial<T>`,它能将一个对象类型 `T` 的所有属性及其子属性都变为可选。例如,对于 `type Obj = { a: { b: { c: string } } }`,`DeepPartial<Obj>` 应该得到 `{ a?: { b?: { c?: string } } }`。要求使用类型查询操作符以及递归的方式来实现,不能使用第三方库。请给出完整的TypeScript类型定义。
36.1万 热度难度
前端开发TypeScript

知识考点

AI 面试

面试题答案

一键面试
type DeepPartial<T> = {
    [P in keyof T]?: T[P] extends object
        ? DeepPartial<T[P]>
         : T[P];
};