devtypes - v2.0.0
    Preparing search index...

    Type Alias DeepRequired<T>

    DeepRequired: T extends Function
    | Date
        ? T
        : T extends (infer U)[]
            ? DeepRequired<U>[]
            : T extends ReadonlyArray<infer U>
                ? ReadonlyArray<DeepRequired<U>>
                : T extends Map<infer K, infer V>
                    ? Map<K, DeepRequired<V>>
                    : T extends ReadonlyMap<infer K, infer V>
                        ? ReadonlyMap<K, DeepRequired<V>>
                        : T extends Set<infer U>
                            ? Set<DeepRequired<U>>
                            : T extends ReadonlySet<infer U>
                                ? ReadonlySet<DeepRequired<U>>
                                : T extends PlainObject
                                    ? { [K in keyof T]-?: DeepRequired<(...)[(...)]> }
                                    : T

    Recursively make all properties required.

    Type Parameters

    • T

      Object type to transform

    Removes optional property modifiers at all nesting levels. Will also remove undefined from union types within the object structure.

    Function types and special types like Date are preserved unchanged.

    type User = { id?: number; profile?: { name?: string; address?: { city?: string } } };
    type Required = DeepRequired< User >;
    // { id: number; profile: { name: string; address: { city: string } } }