Một generic constraint (T extends ...) giới hạn các type mà một generic parameter có thể nhận, để bạn có thể sử dụng an toàn một số property hoặc method nhất định trên nó. Không có constraint, một generic có thể là bất cứ thứ gì, nên bạn không thể giả định nó có bất kỳ thành viên nào.
longestBad<T>(: T, : T) {
a. > b. ? a : b;
}
longest<T { : }>(: T, : T): T {
a. > b. ? a : b;
}
(, );
([, ], []);
(, );
