export type DeepPartial = Thing extends Function ? Thing : Thing extends Array ? DeepPartialArray : Thing extends object ? DeepPartialObject : Thing | undefined; interface DeepPartialArray extends Array> { } type DeepPartialObject = { [Key in keyof Thing]?: DeepPartial; }; export {};