/** * 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)