面试题答案
一键面试- 实现代码:
type DeepPartial<T> = {
[P in keyof T]?: T[P] extends object
? DeepPartial<T[P]>
: T[P];
};
- 实现思路:
- 使用
keyof
操作符获取类型T
的所有键。 - 对于每个键
P
,使用条件类型T[P] extends object
判断该键对应的值类型是否为对象。 - 如果是对象,则递归调用
DeepPartial
将其变为深度可选;如果不是对象,则直接使其可选,即使用?
操作符。这样就实现了对所有层级属性的递归可选化。
- 使用