vtils

Home > types > NonNullableDeep

NonNullableDeep type

Like NonNullable but recursive

Signature:

export declare type NonNullableDeep<T> = T extends Builtin
? NonNullable<T>
: T extends Map<infer K, infer V>
? Map<NonNullableDeep<K>, NonNullableDeep<V>>
: T extends ReadonlyMap<infer K, infer V>
? ReadonlyMap<NonNullableDeep<K>, NonNullableDeep<V>>
: T extends WeakMap<infer K, infer V>
? WeakMap<NonNullableDeep<K>, NonNullableDeep<V>>
: T extends Set<infer U>
? Set<NonNullableDeep<U>>
: T extends ReadonlySet<infer U>
? ReadonlySet<NonNullableDeep<U>>
: T extends WeakSet<infer U>
? WeakSet<NonNullableDeep<U>>
: T extends Promise<infer U>
? Promise<NonNullableDeep<U>>
: T extends {}
? {
    [K in keyof T]: NonNullableDeep<T[K]>;
}
: NonNullable<T>;

References: NonNullableDeep