En este tema, aprenderemos sobre dos conceptos fundamentales en TypeScript que son esenciales para trabajar con Angular: las clases y las interfaces. Estos conceptos nos permiten estructurar y tipar nuestro código de manera más robusta y mantenible.
Clases en TypeScript
Las clases en TypeScript son una forma de definir objetos y sus comportamientos. Una clase puede contener propiedades y métodos que definen el estado y el comportamiento de los objetos creados a partir de la clase.
Definición de una Clase
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.`);
}
}
const persona1 = new Persona('Juan', 30);
persona1.saludar(); // Hola, mi nombre es Juan y tengo 30 años.Explicación del Código
- Definición de la Clase: La clase
Personatiene dos propiedades (nombreyedad) y un método (saludar). - Constructor: El constructor es una función especial que se ejecuta cuando se crea una nueva instancia de la clase. En este caso, inicializa las propiedades
nombreyedad. - Método
saludar: Este método imprime un mensaje de saludo en la consola. - Instanciación: Se crea una nueva instancia de la clase
Personay se llama al métodosaludar.
Herencia
TypeScript soporta la herencia, lo que permite crear nuevas clases basadas en clases existentes.
class Empleado extends Persona {
salario: number;
constructor(nombre: string, edad: number, salario: number) {
super(nombre, edad);
this.salario = salario;
}
mostrarSalario(): void {
console.log(`Mi salario es ${this.salario}`);
}
}
const empleado1 = new Empleado('Ana', 28, 50000);
empleado1.saludar(); // Hola, mi nombre es Ana y tengo 28 años.
empleado1.mostrarSalario(); // Mi salario es 50000Explicación del Código
- Clase
Empleado: Extiende la clasePersona, heredando sus propiedades y métodos. - Constructor: Utiliza
superpara llamar al constructor de la clase base (Persona). - Nuevo Método
mostrarSalario: Este método imprime el salario del empleado.
Interfaces en TypeScript
Las interfaces en TypeScript son una forma de definir la estructura de un objeto. A diferencia de las clases, las interfaces no pueden contener implementación de métodos.
Definición de una Interfaz
interface Animal {
nombre: string;
edad: number;
hacerSonido(): void;
}
class Perro implements Animal {
nombre: string;
edad: number;
constructor(nombre: string, edad: number) {
this.nombre = nombre;
this.edad = edad;
}
hacerSonido(): void {
console.log('Guau Guau');
}
}
const perro1 = new Perro('Rex', 5);
perro1.hacerSonido(); // Guau GuauExplicación del Código
- Definición de la Interfaz
Animal: Define las propiedadesnombreyedad, y el métodohacerSonido. - Implementación de la Interfaz: La clase
Perroimplementa la interfazAnimal, asegurando que contiene todas las propiedades y métodos definidos en la interfaz.
Uso de Interfaces para Tipar Objetos
Las interfaces también se pueden usar para tipar objetos sin necesidad de crear una clase.
interface Punto {
x: number;
y: number;
}
const punto1: Punto = { x: 10, y: 20 };
console.log(punto1); // { x: 10, y: 20 }Ejercicios Prácticos
Ejercicio 1: Crear una Clase
Crea una clase Coche con las propiedades marca, modelo y año. Añade un método detalles que imprima los detalles del coche.
class Coche {
marca: string;
modelo: string;
año: number;
constructor(marca: string, modelo: string, año: number) {
this.marca = marca;
this.modelo = modelo;
this.año = año;
}
detalles(): void {
console.log(`Coche: ${this.marca} ${this.modelo}, Año: ${this.año}`);
}
}
const coche1 = new Coche('Toyota', 'Corolla', 2020);
coche1.detalles(); // Coche: Toyota Corolla, Año: 2020Ejercicio 2: Crear una Interfaz
Define una interfaz Producto con las propiedades nombre, precio y enStock. Crea un objeto que implemente esta interfaz.
interface Producto {
nombre: string;
precio: number;
enStock: boolean;
}
const producto1: Producto = {
nombre: 'Laptop',
precio: 1500,
enStock: true
};
console.log(producto1); // { nombre: 'Laptop', precio: 1500, enStock: true }Conclusión
En esta sección, hemos aprendido sobre las clases y las interfaces en TypeScript. Las clases nos permiten definir objetos con propiedades y métodos, mientras que las interfaces nos ayudan a definir la estructura de los objetos. Estos conceptos son fundamentales para escribir código robusto y mantenible en Angular. En el próximo módulo, exploraremos cómo crear y trabajar con componentes en Angular.
Curso de Angular 2+
Módulo 1: Introducción a Angular
- ¿Qué es Angular?
- Configuración del Entorno de Desarrollo
- Tu Primera Aplicación Angular
- Arquitectura de Angular
Módulo 2: Conceptos Básicos de TypeScript
- Introducción a TypeScript
- Variables y Tipos de Datos en TypeScript
- Funciones y Funciones Flecha
- Clases e Interfaces
Módulo 3: Componentes y Plantillas
- Creación de Componentes
- Plantillas de Componentes
- Estilos de Componentes
- Interacción entre Componentes
Módulo 4: Directivas y Pipes
Módulo 5: Servicios e Inyección de Dependencias
- Introducción a los Servicios
- Creación y Uso de Servicios
- Inyección de Dependencias
- Inyectores Jerárquicos
Módulo 6: Enrutamiento y Navegación
Módulo 7: Formularios en Angular
- Formularios Basados en Plantillas
- Formularios Reactivos
- Validación de Formularios
- Formularios Dinámicos
Módulo 8: Cliente HTTP y Observables
- Introducción al Cliente HTTP
- Realizando Solicitudes HTTP
- Manejo de Respuestas HTTP
- Uso de Observables
Módulo 9: Gestión de Estado
- Introducción a la Gestión de Estado
- Uso de Servicios para la Gestión de Estado
- NgRx Store
- NgRx Effects
