Considere la siguiente función genérica en Flow:
function lessThen<T>(a: T, b: T) { return a < b; } La intención aquí es instanciar lessThen con un tipo que permita el operador < como number o string .
De esta forma Flow se queja de ello:
return a < b; ^ Cannot compare `T` [1] to `T` [2]. [invalid-compare] References: 1: function lessThen<T>(a: T, b: T) { ^ [1] 1: function lessThen<T>(a: T, b: T) { ^ [2] Así que supongo que necesito restringir T en lessThen para admitir < . Pero, ¿cómo hago eso? Estaba buscando algo como el tipo integrado CanUseCompareOperators para poder escribir:
function lessThen<T: CanUseCompareOperators>(a: T, b: T) { return a < b; }pero no puedo encontrar ninguno.
Aunque en este ejemplo de juguete puedo descartar los genéricos y dejar que Flow infiera el tipo, en el código real necesito que esto funcione para métodos en una clase genérica cuando descartar genéricos no es una opción como en:
class Foo<Key, Value> { binarySearch() { // code that uses < and > to compare keys } }