Open yunliuyan opened 11 months ago
递归
type GetKey<S> = S extends '' ? '' : S extends `${infer L}.${infer R}` ? [L, R] :[S];
type DeepPick<T extends object, U> = {
[key in keyof T as key extends GetKey<U>[0] ? key : never] : T[key] extends object ? DeepPick<T[key], GetKey<U>[1]> : T[key];
}
DeepPick
![#deep](https://img.shields.io/badge/-%23deep-999)
Implement a type DeepPick, that extends Utility types
Pick
. A type takes two arguments.For example: