DeepReadonly<T>: T extends [infer A]
    ? DeepReadonlyObject<[A]>
    : T extends [infer A, infer B]
        ? DeepReadonlyObject<[A, B]>
        : T extends [infer A, infer B, infer C]
            ? DeepReadonlyObject<[A, B, C]>
            : T extends [infer A, infer B, infer C, infer D]
                ? DeepReadonlyObject<[A, B, C, D]>
                : T extends [infer A, infer B, infer C, infer D, infer E]
                    ? DeepReadonlyObject<[A, B, C, D, E]>
                    : T extends [infer A, infer B, infer C, infer D, infer E, infer F]
                        ? DeepReadonlyObject<[A, B, C, D, E, F]>
                        : T extends [infer A, infer B, infer C, infer D, infer E, infer F, infer G]
                            ? DeepReadonlyObject<[A, B, C, D, E, F, G]>
                            : T extends Map<infer U, infer V>
                                ? ReadonlyMap<DeepReadonlyObject<U>, DeepReadonlyObject<V>>
                                : T extends Set<infer U>
                                    ? ReadonlySet<DeepReadonlyObject<U>>
                                    : T extends Promise<infer U>
                                        ? Promise<DeepReadonlyObject<U>>
                                        : T extends Primitive
                                            ? T
                                            : T extends (infer A)[]
                                                ? DeepReadonlyArray<A>
                                                : DeepReadonlyObject<T>

Deep version of the Readonly<> type, with support for tuples (up to length 7). https://gist.github.com/masterkidan/7322752f569b1bba53e0426266768623

Type Parameters

  • T

Generated using TypeDoc