MakeReadonly<T>: T extends Map<infer K, infer V>
    ? ReadonlyMap<K, V>
    : T extends Set<infer V>
        ? ReadonlySet<V>
        : T extends [infer Head, ...(infer Tail)]
            ? readonly [Head, ...Tail]
            : T extends (infer V)[]
                ? ReadonlyArray<V>
                : T extends BuiltIn
                    ? T
                    : Readonly<T>

Type Parameters

  • T