Genéricos permitem que você escreva código reutilizável parametrizado por um tipo — uma "variável de tipo" preenchida quando o código é usado. Eles oferecem reutilização sem perder segurança de tipo (a alternativa, any, a perde).
ts
(): { arr[]; }
first<T>(: T[]): T { arr[]; }
n = ([, , ]);
s = ([, ]);
