import { IsTupleList, List } from "../list"; import { Builtin } from "../primitive"; import { IsUnknown } from "../type"; import { Optional } from "."; /** * makes (nested) keys of an object optional * * @since 0.0.2 */ export type DeepOptional = T extends Builtin ? T : T extends Promise ? Promise> : IsTupleList extends true ? { [K in keyof T]?: DeepOptional; } : T extends List ? List | undefined> : T extends Map ? Map, DeepOptional> : T extends Set ? Set> : T extends ReadonlyMap ? ReadonlyMap, DeepOptional> : T extends ReadonlySet ? ReadonlySet> : T extends WeakMap ? WeakMap, DeepOptional> : T extends WeakSet ? WeakSet> : T extends {} ? { [K in keyof T]?: DeepOptional; } : IsUnknown extends true ? unknown : Optional; //# sourceMappingURL=deep-optional.d.ts.map