vtils

Home > types > NullableDeep

NullableDeep type

Recursive nullable

Signature:

export declare type NullableDeep<T> = T extends Builtin
? T | null
: T extends Map<infer K, infer V>
? Map<NullableDeep<K>, NullableDeep<V>>
: T extends WeakMap<infer K, infer V>
? WeakMap<NullableDeep<K>, NullableDeep<V>>
: T extends Set<infer U>
? Set<NullableDeep<U>>
: T extends WeakSet<infer U>
? WeakSet<NullableDeep<U>>
: T extends Array<infer U>
? T extends IsTuple<T>
? {
    [K in keyof T]: NullableDeep<T[K]> | null;
}
: Array<NullableDeep<U>>
: T extends Promise<infer U>
? Promise<NullableDeep<U>>
: T extends {}
? {
    [K in keyof T]: NullableDeep<T[K]>;
}
: T | null;

References: NullableDeep