Los generics te permiten escribir código reutilizable parametrizado por un tipo: una "variable de tipo" que se completa cuando el código se usa. Te dan reutilización sin perder seguridad de tipos (la alternativa, any, la pierde).
(): { arr[]; }
first<T>(: T[]): T { arr[]; }
n = ([, , ]);
s = ([, ]);
