import type { PickDeepKey } from "./pickDeepKey"; import type { UnionToIntersection } from "../logic/unionToIntersection"; export type GetValueAtPath = P extends `${infer Key}.${infer Rest}` ? Key extends keyof T ? T[Key] extends object ? GetValueAtPath : never : never : P extends keyof T ? T[P] : never; export type ConstructNestedObject

= P extends `${infer Key}.${infer Rest}` ? { [K in Key]: ConstructNestedObject; } : { [K in P]: V; }; export type ProcessKeys[]> = { [I in keyof K]: K[I] extends string ? ConstructNestedObject> : never; }[number]; export type PickDeep[]> = UnionToIntersection>;