Une contrainte générique (T extends ...) restreint les types qu'un paramètre générique peut être, vous permettant d'utiliser en toute sécurité certaines propriétés ou méthodes sur celui-ci. Sans contrainte, un générique pourrait être n'importe quoi, vous ne pouvez donc pas supposer qu'il a des membres.
longestBad<T>(: T, : T) {
a. > b. ? a : b;
}
longest<T { : }>(: T, : T): T {
a. > b. ? a : b;
}
(, );
([, ], []);
(, );
