Propiedad de solo lectura
Cannot assign to 'x' because it is a read-only property.Las palabras del propio compilador. Sin traducir — es la cadena que pegaste en el buscador.
La propiedad está marcada como `readonly`, que es una promesa en tiempo de compilación de no reasignarla — y nada más.
Reproducción
const point: { readonly x: number } = { x: 1 } point.x = 2
La compilación afirma que esto emite exactamente este código.
Por qué lo dice el compilador
`readonly` se borra en tiempo de ejecución. Detiene las asignaciones que el compilador ve, y nada más — el mismo objeto entregado a JavaScript, o alcanzado por un alias sin `readonly` del mismo tipo, es completamente mutable. Documenta la intención y atrapa los errores honestos, lo cual vale mucho y no es lo mismo que estar congelado.
Arreglos
- 01
const point: { x: number } = { x: 1 } point.x = 2
Quita el modificador si el valor de verdad debe cambiar. `readonly` sobre algo que mutas es un comentario que miente.
- 02
const point: { readonly x: number } = { x: 1 } const moved: { readonly x: number } = { ...point, x: 2 }
O construye uno nuevo. Es lo que `readonly` te está pidiendo, y por eso vale la pena mantener el modificador: el valor antiguo sigue siendo válido para quien aún lo tenga.
Conclusión
`readonly` es una nota para otros programadores que el compilador resulta imponer. No es `Object.freeze`, y nunca llega al tiempo de ejecución.