export type DeepPartial = T extends object ? { [P in keyof T]?: T[P] extends Array ? Array> : T[P] extends object ? DeepPartial : T[P]; } : T; export type DeepPartialButRequired = DeepPartial & Required>;