Uma restrição genérica (T extends ...) restringe quais tipos um parâmetro genérico pode ser, para que você possa usar com segurança certas propriedades ou métodos nele. Sem uma restrição, um genérico pode ser qualquer coisa, então você não pode assumir que possui nenhum membro.
longestBad<T>(: T, : T) {
a. > b. ? a : b;
}
longest<T { : }>(: T, : T): T {
a. > b. ? a : b;
}
(, );
([, ], []);
(, );
