ReadonlyDeep: { readonly [P in keyof T]: ReadonlyDeep<T[P]> }

Mutates the type by making all properties readonly, recursively.

Type Parameters

  • T

    The type to mutate.

type Original = { name: string; age: number }
type Mutated = ReadonlyDeep<Original>; // { readonly name: string; readonly age: number }