以下为ChatGPT自动生成的解答,正确与否请自行判断。 也许你也可以从大家的发帖中找到想要的答案!
BFE.devAI解答 - TypeScript 类型谜题
60. implement UndefinedToNull<T>
题目描述
实现一个类型工具 UndefinedToNull<T>,将输入的 T 类型中所有值为 undefined 的属性转换为 null,其他属性类型保持不变。同时支持对象和数组类型。
解题思路
可以利用递归和条件类型来实现。
当 T 为基础类型时,如果 T 是 undefined,则直接返回 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;