Los generics son por lo general un contenedor de cierto tipo que trabajar de forma independiente del tipo de elementos que contiene. Es ideal para estructuras de datos trabajar de esta forma, de manera que sean reutilizables a trav茅s de diferentes tipos de datos.
Hemos estado trabajando con el tipo Array
a lo largo de las lecciones anteriores. Cuando hacemos referencia a string[]
o number[]
, usamos la sintaxis alternativa a Array<string>
y Array<number>
.
const imprimirTareas = (v: Array<string>) => {
v.forEach((v) => {
console.log(v);
});
};
const misTareas: string[] = [
"levantarse",
"lavarse los dientes",
"sacar al perro",
];
imprimirTareas(misTareas);
Salida…
levantarse
lavarse los dientes
sacar al perro
En la funci贸n
imprimirTareas
recibimos un par谩metro tipoArray<string>
(un arreglo de cadenas). Cuando invocamos la funci贸nimprimirTareas
le enviamos el argumentomisTareas
que es tipostring[]
, que tambi茅n hace referencia al mismo tipo de arreglo. Esto debido a que tantoArray<string>
comostring[]
representan lo mismo.
As铆 como en la lecci贸n anterior en donde hablamos de generics, Array
tambi茅n representa un generic
.
interface Array<T> {
/**
* Obtiene el tama帽o del arreglo
*/
length: number;
/**
* Remueve el 煤timo elemento del arreglo y lo retorna
*/
pop(): T | undefined;
/**
* Agrega un nuevo elemento al arreglo y retorna el tama帽o de este
*/
push(...items: T[]): number;
// ...
}
La programaci贸n moderna en JavaScript provee ademas otras estructuras que son tambi茅n generics, como Map<K, V>
, Set<T
, y Promise<T>
. Esto quiere decir que debido a como funcionan Map
, Set
y Promise
, pueden trabajar con cualquier conjunto de tipos.