Type alias MakeReadonly<T>
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>