blob: dddb6d627bc9427e5b5db3edf8d9802da8c662ea (
plain)
1
2
3
4
5
6
7
8
9
10
|
/** Deep-readonly version of a structural type. */
export type DeepReadonly<T> = T extends (infer U)[]
? ReadonlyArray<DeepReadonly<U>>
: T extends Map<infer K, infer V>
? ReadonlyMap<DeepReadonly<K>, DeepReadonly<V>>
: T extends Set<infer U>
? ReadonlySet<DeepReadonly<U>>
: T extends object
? { readonly [K in keyof T]: DeepReadonly<T[K]> }
: T
|