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