Generics - Tipos dinámicos
Es una forma de decirle a TypeScript que un tipo puede ser dinámico, es decir, que no se conoce exactamente hasta que se usa. Nos permite escribir código reutilizable y flexible, sin perder la seguridad de tipos. Ejemplo: function wrapInArray(element: T): T[] { return [element]; } const numero = wrapInArray(5); // number[] const texto = wrapInArray("hola"); // string[] Donde T es el tipo dinamico. También se pueden pasar varios tipos dinámicos function combinar(a: T, b: U): [T, U] { return [a, b]; } const resultado = combinar("edad", 25); // ["edad", 25] Se pueden definir tipos por default

Es una forma de decirle a TypeScript que un tipo puede ser dinámico, es decir, que no se conoce exactamente hasta que se usa. Nos permite escribir código reutilizable y flexible, sin perder la seguridad de tipos.
Ejemplo:
function wrapInArray<T>(element: T): T[] {
return [element];
}
const numero = wrapInArray<number>(5); // number[]
const texto = wrapInArray<string>("hola"); // string[]
Donde T
es el tipo dinamico.
También se pueden pasar varios tipos dinámicos
function combinar<T, U>(a: T, b: U): [T, U] {
return [a, b];
}
const resultado = combinar<string, number>("edad", 25); // ["edad", 25]
Se pueden definir tipos por default