/** * Recursively Update a deep property from a given path * * @param Keys array of keeps into the object * @param U The object to change * @param T the next type at the key path * * */ export type DeepModify = Keys extends [infer K, ...infer Rest] ? K extends keyof U ? Rest extends readonly [] ? Omit & Record : Rest extends readonly PropertyKey[] ? Omit & Record> : never : never : never;