DeepReadonly
DeepReadonly<T> = T extends (infer R)[] ? ReadonlyArray<DeepReadonly<R>> : T extends object ? { readonly [P in keyof T]: DeepReadonly<T[P]> } : TSource: common.ts:124
Deep readonly - makes all nested properties readonly
Type Parameters
T— The base type
Example
CODE
interface State {
user: { name: string }
items: string[]
}
const state: DeepReadonly<State> = { user: { name: 'Alice' }, items: [] }
// state.user.name = 'Bob' // Error!