Crear clases en TypeScript nos permite estructurar nuestro código de manera clara y orientada a objetos, aprovechando las ventajas que este lenguaje ofrece sobre JavaScript. Para empezar, declaramos una clase usando la palabra clave class seguida del nombre que queramos darle, por ejemplo, Rectangulo. Dentro de esta clase definimos las propiedades que tendrá, como ancho y alto, ambas de tipo number. A diferencia de JavaScript, en TypeScript es necesario declarar explícitamente estas propiedades para que el sistema de tipos pueda ayudarnos con autocompletados y validaciones.
Cuando intentamos declarar estas propiedades sin inicializarlas, TypeScript nos mostrará un error porque espera que tengan un valor asignado. Para solucionar esto, utilizamos el constructor, una función especial que se ejecuta al crear una instancia de la clase con new. El constructor nos permite inicializar las propiedades con valores concretos que recibimos como parámetros. Por ejemplo, podemos definir el constructor así:
class Rectangulo {
ancho: number;
alto: number;
constructor(ancho: number, alto: number) {
this.ancho = ancho;
this.alto = alto;
}
}
Aquí, this hace referencia a la instancia actual del objeto, por lo que this.ancho y this.alto son las propiedades que estamos inicializando con los valores que recibimos al crear el rectángulo.
Además de las propiedades, podemos definir métodos dentro de la clase para realizar operaciones relacionadas con ella. Por ejemplo, para calcular el área del rectángulo, creamos un método llamado area que devuelve el producto del ancho por el alto:
area(): number {
return this.ancho * this.alto;
}
De forma similar, podemos definir un método para calcular el perímetro:
perimetro(): number {
return 2 * this.ancho + 2 * this.alto;
}
Al crear instancias de la clase, cada objeto tendrá sus propios valores para ancho y alto, pero compartirán los mismos métodos para calcular área y perímetro. Por ejemplo:
const r1 = new Rectangulo(10, 15);
const r2 = new Rectangulo(4, 3);
console.log(r1.area()); // 150
console.log(r2.perimetro()); // 14
Es importante destacar que el uso de new es obligatorio para crear una instancia de la clase, ya que diferencia la creación de un objeto de la simple llamada a una función.
Aunque la sintaxis de clases en TypeScript es muy similar a la de JavaScript, la principal diferencia radica en la declaración explícita de tipos y propiedades, lo que nos brinda mayor seguridad y herramientas durante el desarrollo. En JavaScript, las propiedades suelen definirse directamente dentro del constructor sin declararlas previamente, mientras que en TypeScript las declaramos antes para aprovechar el sistema de tipos.
Con esta base, podemos construir clases más complejas y aprovechar otras características propias de TypeScript para mejorar la programación orientada a objetos. Pero por ahora, esta estructura sencilla de clase con propiedades, constructor y métodos nos permite entender cómo crear y manejar clases desde cero en TypeScript.