O que é?

Generics em TypeScript são uma maneira flexível de escrever código que funciona com diferentes tipos de dados, mantendo a segurança de tipos. Com generics, você pode criar funções, classes e interfaces que podem ser parametrizadas com tipos específicos. Isso permite reutilizar código com diferentes tipos de dados, tornando seu código mais genérico e flexível.

Como utilizar?

// Função que obtém o primeiro elemento de um array genérico
function getFirstElement<T>(data: T[]): T | null {
  if (!data.length) {
    return null;
  }

  const [firstElement] = data;

  return firstElement;
}

Depois de definir a função, o código cria dois arrays:

const stringArray: string[] = ['Lucas', 'Fernanda', 'Gabriel', 'Maria'];
const numberArray: number[] = [1, 2, 3, 4, 5, 6];

Em seguida, a função getFirstElement é chamada duas vezes, uma vez com stringArray e outra vez com numberArray, especificando o tipo genérico T como string e number, respectivamente:

console.log(getFirstElement<string>(stringArray));
console.log(getFirstElement<number>(numberArray));