devtypes - v1.1.0
    Preparing search index...

    Type Alias DeepReadonly<T>

    DeepReadonly: T extends Function
        ? T
        : T extends (infer U)[]
            ? ReadonlyArray<DeepReadonly<U>>
            : T extends object ? { readonly [K in keyof T]: DeepReadonly<T[K]> } : T

    Recursively make all properties readonly.

    Type Parameters

    Applies readonly modifiers deeply to all properties. Function types are preserved unchanged.

    type User = { id: number; profile: { name: string; address: { city: string } } };
    type Readonly = DeepReadonly< User >;
    // { readonly id: number; readonly profile: { readonly name: string; readonly address: { readonly city: string } } }