107. 实现深度 Omit
中等
实现一个通用的工具类型 DeepOmit<T, U>
,类似于工具类型 Omit,该类型接收一个对象类型 T
,以及一个字符串类型 S
,将 T
中的命名为 S
属性(支持以 prop.secondeProp
的形式进行深层)去除。
例如:
type obj = {
person: {
name: string;
age: {
value: number
}
}
}
type test1 = DeepOmit<obj, 'person'> // expected to be {}
type test2 = DeepOmit<obj, 'person.name'> // expected to be { person: { age: { value: number } } }
type test3 = DeepOmit<obj, 'name'> // expected to be { person: { name: string; age: { value: number } } }
type test4 = DeepOmit<obj, 'person.age.value'> // expected to be { person: { name: string; age: {} } }