UNPKG

ts-essentials

Version:
6 lines (5 loc) 857 B
import { Builtin } from "../built-in"; import { IsUnknown } from "../is-unknown"; export type DeepPartial<Type> = Type extends Exclude<Builtin, Error> ? Type : Type extends Map<infer Keys, infer Values> ? Map<DeepPartial<Keys>, DeepPartial<Values>> : Type extends ReadonlyMap<infer Keys, infer Values> ? ReadonlyMap<DeepPartial<Keys>, DeepPartial<Values>> : Type extends WeakMap<infer Keys, infer Values> ? WeakMap<DeepPartial<Keys>, DeepPartial<Values>> : Type extends Set<infer Values> ? Set<DeepPartial<Values>> : Type extends ReadonlySet<infer Values> ? ReadonlySet<DeepPartial<Values>> : Type extends WeakSet<infer Values> ? WeakSet<DeepPartial<Values>> : Type extends Promise<infer Value> ? Promise<DeepPartial<Value>> : Type extends {} ? { [Key in keyof Type]?: DeepPartial<Type[Key]>; } : IsUnknown<Type> extends true ? unknown : Partial<Type>;