export type RecursivePartial = { [P in keyof T]?: T[P] extends (infer U)[] ? RecursivePartial[] : T[P] extends (...args: any) => any ? T[P] | undefined : T[P] extends object ? RecursivePartial : T[P]; };