Type Alias DeepReadonly<T>
DeepReadonly: { readonly [K in keyof T]: T[K] extends | undefined | null | boolean | number | string | symbol | bigint | Function ? T[K] : T[K] extends (
infer V)
[] ? ReadonlyArray<DeepReadonly<V>> : T[K] extends Map<infer K, infer V> ? ReadonlyMap<DeepReadonly<K>, DeepReadonly<V>> : T[K] extends Set<infer V> ? ReadonlySet<DeepReadonly<V>> : DeepReadonly<T[K]>}
Make all properties in T recursively readonly.