TypeScript
Tutorial TypeScript: Polimorfismo
TypeScript polimorfismo: implementación y ejemplos. Aprende a implementar polimorfismo en TypeScript con ejemplos prácticos y detallados.
Aprende TypeScript GRATIS y certifícateEl polimorfismo es un concepto fundamental de la programación orientada a objetos que permite que un objeto pueda tomar muchas formas. Los objetos polimórficos pueden comportarse de diferentes maneras dependiendo del contexto en el que se utilizan. En otras palabras, un objeto puede responder a los mismos mensajes (métodos) de diferentes formas. TypeScript soporta polimorfismo y lo facilita con una sintaxis clara y eficiente.
Polimorfismo de subtipos
En TypeScript, el polimorfismo de subtipos es una forma de polimorfismo en la que una subclase puede ser tratada como su superclase (una clase hija puede ser tratada como su clase padre). Un objeto de la subclase puede ser utilizado en un lugar donde se espera un objeto de la superclase. Esto es posible debido a la relación de herencia entre la superclase y la subclase.
class Animal {
comer() {
console.log('El animal come');
}
}
class Perro extends Animal {
comer() {
console.log('El perro come croquetas');
}
}
class Gato extends Animal {
comer() {
console.log('El gato come pescado');
}
}
function alimentarAnimal(animal: Animal) {
animal.comer();
}
let miPerro = new Perro();
let miGato = new Gato();
alimentarAnimal(miPerro); // Imprime: "El perro come croquetas"
alimentarAnimal(miGato); // Imprime: "El gato come pescado"
En este código, Perro
y Gato
son subclases de Animal
. El método alimentarAnimal
espera un argumento de tipo Animal
, pero se le puede pasar un objeto de tipo Perro
o Gato
porque ambos son subtipos de Animal
. A esto se le llama polimorfismo.
Polimorfismo de clases abstractas
Las clases abstractas en TypeScript también permiten polimorfismo. Una clase abstracta es una clase que no se puede instanciar y que se utiliza como base para otras clases, y se declara mediante la palabra clave abstract
. Las clases abstractas pueden tener métodos abstractos, que se definen pero no se implementan en la clase abstracta (no tienen cuerpo), y deben ser implementados por cualquier clase que extienda la clase abstracta.
// Clase abstracta
abstract class Animal {
// Método abstracto, sin implementación
abstract hacerSonido(): void;
}
class Perro extends Animal {
hacerSonido() {
console.log('Guau!');
}
}
class Gato extends Animal {
hacerSonido() {
console.log('Miau!');
}
}
let miPerro = new Perro();
let miGato = new Gato();
// No se podría hacer 'new Animal()' ya que Animal es clase abstracta
miPerro.hacerSonido(); // Imprime: "Guau!"
miGato.hacerSonido(); // Imprime: "Miau!"
Aquí, Animal
es una clase abstracta con un método abstracto hacerSonido
. Las clases Perro
y Gato
extienden Animal
y proporcionan sus propias implementaciones del método hacerSonido
.
Estos son sólo algunos ejemplos de cómo se puede utilizar el polimorfismo en TypeScript. La capacidad de tratar objetos de diferentes formas basándose en su tipo permite escribir código más genérico, flexible y reutilizable.
Ejercicios de esta lección Polimorfismo
Evalúa tus conocimientos de esta lección Polimorfismo con nuestros retos de programación de tipo Test, Puzzle, Código y Proyecto con VSCode, guiados por IA.
Funciones
Funciones de primera clase
Tipos de utilidad
Clases
OOP y CRUD en TypeScript
Tipos literales
Namespaces
Módulos
Funciones TypeScript
Encapsulación
Interfaces
Funciones puras
Variables y constantes
Funciones flecha
Funciones puras
Control de flujo
Resolución de módulos
Control de flujo
Polimorfismo
Operadores
Funciones flecha
Herencia
Clases y objetos
Clases
Operadores
Encapsulación
Herencia
Funciones
Tipos de unión e intersección
Funciones de alto orden
Inmutabilidad
Interfaces
Funciones de alto orden
Tipos de unión e intersección
Tipos genéricos
Control de flujo
Polimorfismo
Interfaces
Tipos literales
Tipos de utilidad
Tipos genéricos
Inmutabilidad
Herencia de clases
Variables y constantes
Variables y constantes
Funciones de primera clase
Introducción a TypeScript
Todas las lecciones de TypeScript
Accede a todas las lecciones de TypeScript y aprende con ejemplos prácticos de código y ejercicios de programación con IDE web sin instalar nada.
Introducción A Typescript
Introducción Y Entorno
Variables Y Constantes
Sintaxis
Operadores
Sintaxis
Control De Flujo
Sintaxis
Funciones
Sintaxis
Funciones Flecha
Sintaxis
Clases Y Objetos
Programación Orientada A Objetos
Interfaces
Programación Orientada A Objetos
Encapsulación
Programación Orientada A Objetos
Herencia
Programación Orientada A Objetos
Polimorfismo
Programación Orientada A Objetos
Inmutabilidad
Programación Funcional
Funciones Puras
Programación Funcional
Funciones De Primera Clase
Programación Funcional
Funciones De Alto Orden
Programación Funcional
Tipos Literales
Tipos De Datos Avanzados
Tipos Genéricos
Tipos De Datos Avanzados
Tipos De Unión E Intersección
Tipos De Datos Avanzados
Tipos De Utilidad
Tipos De Datos Avanzados
Módulos
Namespaces Y Módulos
Namespaces
Namespaces Y Módulos
Resolución De Módulos
Namespaces Y Módulos
Certificados de superación de TypeScript
Supera todos los ejercicios de programación del curso de TypeScript y obtén certificados de superación para mejorar tu currículum y tu empleabilidad.
En esta lección
Objetivos de aprendizaje de esta lección
- Comprender el concepto de polimorfismo y su importancia en la programación orientada a objetos.
- Conocer el polimorfismo de subtipos en TypeScript, donde una subclase puede ser tratada como su superclase y ser utilizada en lugares donde se espera un objeto de la superclase.
- Aprender a utilizar clases abstractas en TypeScript y cómo declarar y utilizar métodos abstractos que deben ser implementados por las subclases.
- Entender cómo el polimorfismo permite escribir código más genérico, flexible y reutilizable, ya que los objetos pueden responder a los mismos mensajes de diferentes formas según su tipo.