/** * Same as Partial but goes deeper and makes Partial all its properties and sub-properties. */ export type DeepPartial = T | (T extends Array ? DeepPartial[] : T extends Map ? Map, DeepPartial> : T extends Set ? Set> : T extends object ? { [K in keyof T]?: DeepPartial; } : T);