import { Primitive } from 'ts-toolbelt/out/Misc/Primitive'; import type { WITNESS } from '.'; import { ReplaceAllAnyWithNever } from './utils'; type NonDeepPartibleTypes = [Date, Blob, FileList]; export type DeepPartial = (T extends ReplaceAllAnyWithNever[number] | Primitive | { [WITNESS]: unknown; } ? T : T extends unknown[] ? DeepPartial[] : { [K in keyof T]?: (T[K] extends {} ? DeepPartial : T[K]); }); export {};