Formas de objeto
Readonly
Añade `readonly` a cada propiedad de un objeto, un nivel de profundidad.
Qué es
El tipo mapeado homomórfico estándar para una vista de solo lectura. Recorre `keyof T`, añade el modificador a cada propiedad y conserva el resto de la forma. “Vista” importa: el JavaScript generado no congela nada y un alias mutable aún puede cambiar el mismo objeto.
Ejemplos
Readonly<{ a: string; b: number }>→{ readonly a: string; readonly b: number; }Readonly<{ nested: { value: number } }>→{ readonly nested: { value: number; }; }La referencia exterior es de solo lectura; `nested.value` no.
Readonly<[1, 2]>
→readonly [1, 2]
Cada tipo resuelto de arriba lo imprimió TypeScript 6.0.3, no se escribió a mano.
Lo que no hace
- No es profundo. Los objetos anidados conservan sus modificadores, así que una propiedad de solo lectura puede apuntar a datos mutables.
- No llama a `Object.freeze` ni sobrevive en tiempo de ejecución. Restringe asignaciones visibles para el compilador, no mutaciones hechas en otro lugar.
Conclusión
`Readonly<T>` es una vista de un nivel y de solo lectura en compilación. Usa recursión para profundidad y una operación de ejecución para congelar de verdad.
