以下为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;