¿Cómo se puede declarar una propiedad de solo lectura en una clase de TypeScript?

Declaración de Propiedad de Solo Lectura en TypeScript utilizando 'readonly'

En TypeScript, una propiedad de solo lectura se puede declarar utilizando la palabra clave readonly. Esta palabra clave asegura que una vez que una propiedad ha sido inicializada, no puede ser modificada nuevamente.

¿Qué es 'readonly'?

La palabra clave readonly en TypeScript es utilizada para hacer que una propiedad sea de solo lectura. Dicho de otra manera, una propiedad readonly puede ser accedida externamente pero no puede ser modificada. Cuando intentamos modificar una propiedad readonly, TypeScript nos mostrará un error de compilación.

Aquí tienes un ejemplo de cómo se utiliza:

class Rectangulo {
  readonly altura: number;
  readonly ancho: number;

  constructor(altura: number, ancho: number) {
    this.altura = altura;
    this.ancho = ancho;
  }
}

const rect = new Rectangulo(20, 30);
console.log(rect.altura);  // Esto es correcto, podemos acceder a la propiedad
rect.altura = 40;  // Error! No se puede modificar una propiedad readonly

Como se puede ver, rect.altura puede ser leído pero no cambiado después de su inicialización.

¿Por qué no 'const', 'static' o 'final'?

Al contrario de readonly, la palabra clave const de TypeScript se utiliza para declarar una constante a nivel de variable, y no puede ser utilizada para declarar propiedades dentro de una clase.

Por otra parte, static se utiliza para declarar métodos o propiedades que pertenecen a la clase misma, no a una instancia de la clase.

La palabra clave final no existe en TypeScript. Se utiliza en algunos otros lenguajes de programación (como Java) para hacer que una clase no pueda ser extendida o que un método no pueda ser sobreescrito.

Conclusión

La manera correcta de declarar una propiedad de solo lectura en una clase de TypeScript es usando la palabra clave readonly. Esta característica nos ayuda a prevenir la modificación accidental de los datos y mejora la seguridad y la mantenibilidad de nuestro código.

Related Questions

¿Te resulta útil?