以下为ChatGPT自动生成的解答,正确与否请自行判断。 也许你也可以从大家的发帖中找到想要的答案!

BFE.devAI解答 - TypeScript 类型谜题
60. implement UndefinedToNull<T>

题目描述

实现一个类型工具 UndefinedToNull<T>,将输入的 T 类型中所有值为 undefined 的属性转换为 null,其他属性类型保持不变。同时支持对象和数组类型。

解题思路

可以利用递归和条件类型来实现。

T 为基础类型时,如果 Tundefined,则直接返回 null,否则返回 T

T 类型为数组时,对每个元素递归调用 UndefinedToNull

T 类型为对象时,对每个属性递归调用 UndefinedToNull

完整代码

type UndefinedToNull<T> = T extends undefined ? null :
    T extends null ? null :
    T extends object ? {
        [K in keyof T]: UndefinedToNull<T[K]>
    } :
    T extends any[] ? {
        [P in keyof T]: UndefinedToNull<T[P]>
    } : T;