clases-en-typescript

Qué son y cómo usar clases en TypeScript

Las clases en TypeScript proporcionan una manera estructurada para definir objetos con propiedades y métodos asociados.

Las clases son fundamentales en la programación orientada a objetos, ya que nos permiten definir objetos que encapsulan datos y comportamientos relacionados.

Si quieres aprender más, os dejo el enlace al Curso de Programación orientada a objetos 👇

Definición de una Clase

En TypeScript, puedes definir una clase utilizando la palabra clave class, seguida del nombre de la clase y un bloque de código que contiene sus miembros.

Veamos un ejemplo sencillo de una clase Persona:

class Persona {
    nombre: string;
    edad: number;

    constructor(nombre: string, edad: number) {
        this.nombre = nombre;
        this.edad = edad;
    }

    saludar(): void {
        console.log(`Hola, mi nombre es ${this.nombre} y tengo ${this.edad} años.`);
    }
}

En este ejemplo,

  • class Persona: Define una nueva clase llamada Persona.
  • nombre: string y edad: number: Son propiedades de la clase. Se definen con un tipo de dato que especifica qué tipo de valores pueden almacenar.
  • constructor(nombre: string, edad: number): Es un método especial llamado constructor que se invoca al crear una nueva instancia de la clase. Inicializa las propiedades nombre y edad.
  • saludar(): void: Es un método que no devuelve ningún valor (void) y que imprime un saludo en la consola.

Instanciar una Clase

Una vez que tenemos una clase definida, podemos crear instancias de ella utilizando la palabra clave new.

Cada instancia será un objeto separado que tiene sus propias propiedades y métodos. Por ejemplo, vamos a usar nuestra clase Persona para definir dos instancias,

const persona1 = new Persona("Juan", 30);
persona1.saludar();  // Salida: Hola, mi nombre es Juan y tengo 30 años.

const persona2 = new Persona("Ana", 25);
persona2.saludar();  // Salida: Hola, mi nombre es Ana y tengo 25 años.

En este ejemplo,

  1. new Persona("Juan", 30): Crea una nueva instancia de la clase Persona, llamando al constructor con los argumentos "Juan" y 30.
  2. persona1.saludar(): Llama al método saludar del objeto persona1, que imprime un mensaje de saludo usando los valores de sus propiedades.

Y lo mismo para ocurriría para el caso de Ana.

Propiedades y Métodos

Las propiedades y métodos de una clase se pueden definir en la clase misma, añadiéndolos en el cuerpo de la clase. Por ejemplo,

class Coche {
    marca: string;
    modelo: string;
    anio: number;

    constructor(marca: string, modelo: string, anio: number) {
        this.marca = marca;
        this.modelo = modelo;
        this.anio = anio;
    }

    describir(): void {
        console.log(`El coche es un ${this.marca} ${this.modelo} del año ${this.anio}.`);
    }
}

const miCoche = new Coche("Toyota", "Corolla", 2021);
miCoche.describir();  // Salida: El coche es un Toyota Corolla del año 2021.

Constructor

El constructor es un método especial que se invoca automáticamente al crear una nueva instancia de una clase.

Su propósito principal es inicializar las propiedades del objeto con los valores proporcionados durante la instanciación.

Por ejemplo,

class Libro {
    titulo: string;
    autor: string;

    constructor(titulo: string, autor: string) {
        this.titulo = titulo;
        this.autor = autor;
    }
}

const libro1 = new Libro("Cien años de soledad", "Gabriel García Márquez");

En este ejemplo, la clase Libro define un constructor que recibe dos parámetros: titulo, autor. Estos parámetros se utilizan para inicializar las propiedades correspondientes de la clase.

Forma simplificada

TypeScript ofrece una forma más concisa de definir constructores utilizando modificadores de acceso directamente en los parámetros del constructor.

Aquí está el mismo ejemplo usando esta forma simplificada:

class Libro {
    constructor(public titulo: string, public autor: string) {
        }
}

const libro1 = new Libro("Cien años de soledad", "Gabriel García Márquez");
console.log(libro1);

Esta forma simplifica el código al combinar la declaración y la inicialización de las propiedades en una sola línea