ts-type-forge
    Preparing search index...

    Type Alias DeepRequired<T>

    DeepRequired: T extends Primitive
        ? T
        : T extends AnyFn
            ? T
            : T extends MutableMap<infer K, infer V>
                ? MutableMap<DeepRequired<K>, DeepRequired<V>>
                : T extends ReadonlyMap<infer K, infer V>
                    ? ReadonlyMap<DeepRequired<K>, DeepRequired<V>>
                    : T extends MutableSet<infer V>
                        ? MutableSet<DeepRequired<V>>
                        : T extends ReadonlySet<infer V>
                            ? ReadonlySet<DeepRequired<V>>
                            : T extends Record<string, any>
                            | readonly unknown[]
                                ? { [K in keyof T]-?: DeepRequired<T[K]> }
                                : T

    Recursively removes the ? optional modifier from all properties of an object or array. Handles Map and Set types by applying DeepRequired to their keys/values. Primitives and functions are returned as is.

    Type Parameters

    • T

      The type to make deeply required.

    A new type with all nested properties marked as required.

    type PartialData = { a?: number; b?: { c?: string[] } };
    type RequiredData = DeepRequired<PartialData>;
    // Result: { a: number; b: { c: string[] } }