Extender Clases en TypeScript: Herencia y Métodos Nuevos
Clase 12 de 26 • Curso de TypeScript
Resumen
La herencia de clases en TypeScript es una característica poderosa que permite extender la funcionalidad de clases existentes sin modificar su código original. Esta técnica fundamental de la programación orientada a objetos te permite crear jerarquías de clases más organizadas y reutilizar código de manera eficiente, ahorrando tiempo y reduciendo la posibilidad de errores en tus proyectos.
¿Cómo extender clases en TypeScript?
La extensión de clases en TypeScript nos permite crear una nueva clase que hereda todas las propiedades y métodos de una clase base, añadiendo nuevas funcionalidades sin modificar la clase original. Esto se logra mediante la palabra clave extends
.
Para ilustrar este concepto, partiremos de una clase base llamada Persona
que contiene propiedades básicas como nombre, edad y si es desarrollador:
export class Persona {
constructor(
public nombre: string,
public edad: number,
public esDesarrollador: boolean
) {}
}
Ahora, para extender esta clase y crear una nueva llamada Empleado
, seguimos estos pasos:
- Creamos un nuevo archivo llamado
empleado.ts
- Importamos la clase base
Persona
- Utilizamos la palabra clave
extends
para heredar dePersona
import { Persona } from './persona';
export class Empleado extends Persona {
constructor(
nombre: string,
edad: number,
esDesarrollador: boolean,
public puesto: string
) {
super(nombre, edad, esDesarrollador);
}
saludar() {
return `Hola, trabajo como ${this.puesto}`;
}
obtenerInfo() {
return `Tengo ${this.edad} años y trabajo como ${this.puesto}`;
}
}
¿Qué ocurre en el constructor de la clase derivada?
El constructor de la clase derivada (Empleado
) debe llamar al constructor de la clase base (Persona
) utilizando la palabra clave super()
. Esta llamada es obligatoria y debe realizarse antes de acceder a cualquier propiedad con this
dentro del constructor.
En nuestro ejemplo:
- Recibimos los parámetros originales (nombre, edad, esDesarrollador)
- Añadimos un nuevo parámetro (puesto)
- Llamamos a
super()
con los parámetros que necesita la clase base - Definimos la nueva propiedad
puesto
como pública
Es importante destacar que la clase derivada hereda todas las propiedades y métodos de la clase base, pero también puede:
- Añadir nuevas propiedades (como
puesto
) - Añadir nuevos métodos (como
saludar()
yobtenerInfo()
) - Sobrescribir métodos de la clase base (si fuera necesario)
¿Cómo utilizar las clases extendidas?
Una vez que hemos creado nuestra jerarquía de clases, podemos utilizarlas en nuestro código principal. Para ello, creamos un archivo main.ts
:
import { Empleado } from './empleado';
const empleado = new Empleado('Juan', 30, true, 'Desarrollador Frontend');
console.log(empleado.saludar());
console.log(empleado.obtenerInfo());
console.log(empleado.nombre);
Al ejecutar este código, obtendremos:
- "Hola, trabajo como Desarrollador Frontend"
- "Tengo 30 años y trabajo como Desarrollador Frontend"
- "Juan"
Compilación en cascada
Una característica interesante de TypeScript es la compilación en cascada. Cuando compilamos un archivo que importa otros archivos, TypeScript automáticamente compila todos los archivos dependientes.
Por ejemplo, al ejecutar:
tsc main.ts
TypeScript compilará:
main.ts
(el archivo que indicamos)empleado.ts
(porquemain.ts
lo importa)persona.ts
(porqueempleado.ts
lo importa)
Esto genera los correspondientes archivos JavaScript (main.js
, empleado.js
, persona.js
) sin necesidad de compilar cada uno manualmente. Esta característica ahorra tiempo y asegura que todas las dependencias estén correctamente compiladas.
¿Por qué usar la herencia de clases?
La herencia de clases ofrece múltiples beneficios:
- Reutilización de código: evita duplicar propiedades y métodos comunes
- Organización jerárquica: permite crear estructuras lógicas de objetos
- Mantenibilidad: facilita los cambios en la clase base que se propagan a todas las clases derivadas
- Extensibilidad: permite añadir funcionalidades sin modificar el código original
La herencia es especialmente útil cuando trabajas con objetos que comparten características comunes pero necesitan funcionalidades específicas adicionales.
La herencia de clases en TypeScript es una herramienta poderosa que te permite crear código más organizado, mantenible y extensible. Dominar esta técnica te ayudará a desarrollar aplicaciones más robustas y a aprovechar al máximo las ventajas de la programación orientada a objetos en tus proyectos de TypeScript.
¿Has utilizado la herencia de clases en tus proyectos? ¿Qué otras técnicas de programación orientada a objetos consideras fundamentales? Comparte tu experiencia en los comentarios.