AnyCompiler

Generics

Una función genérica trabaja con un tipo que se decide cuando se llama a la función, no cuando se define. Es la forma en que TypeScript expresa "esto funciona igual sin importar el tipo" — una función que invierte un array no debería necesitar una versión separada para strings y numbers.

function firstElement<T>(items: T[]): T {
  return items[0];
}

console.log(firstElement([1, 2, 3]));
console.log(firstElement(["a", "b", "c"]));
Output
1
a

T es un marcador de posición — TypeScript lo rellena con el tipo que realmente pases, y el tipo de retorno queda fijado para coincidir. Se sabe que firstElement([1, 2, 3]) devuelve un number; se sabe que firstElement(["a", "b"]) devuelve un string.

Interfaces genéricas

Las interfaces también pueden ser genéricas — útil para una forma como "una caja que contiene algún valor", donde el tipo del valor varía.

interface Box<T> {
  value: T;
}

let numberBox: Box<number> = { value: 42 };
let stringBox: Box<string> = { value: "hello" };

console.log(numberBox.value, stringBox.value);
Output
42 hello

Siguiente: sentencias condicionales — bifurcar según un valor, igual que en cualquier otro lenguaje.