Есть ли аналог Comparable в TypeScript
Нам задали написать двоичное дерево поиска на TypeScript. С этим языком я не знаком и не могу найти информацию, есть ли в нем аналог интерфейсов Comparable или Comparator, как в java? Потому что дерево должно принимать параметризованные данные, соответственно оно должно сравнивать ключи по значению, которые будут сравниваться различно в зависимости от типа данных, в Java я бы просто поставил ограничение, что дерево должно работать только с реализациями интерфейса Comparable, метод compareTo() бы переопределялся для каждого используемого класса, а тут что делать?
Ну, если на java, то вот, я могу создать любой класс, например "работник" Переопределить для него CompareTo(), что позволит мне использовать его, например, в TreeSet или TreeMap
public class Employee implements Comparable<Employee> {
String name;
int age;
public Employee(String name) {
this.name = name;
}
public Employee(String name, int age) {
this.name = name;
this.age = age;
}
@Override
public int compareTo(Employee e) {
return this.age - e.age;
}
}
...
public static void main(String[] args) {
TreeSet<Employee> treeSet = new TreeSet<>();
treeSet.add(new Employee("Robert", 30));
treeSet.add(new Employee("John", 20));
treeSet.add(new Employee("Maria", 25));
}
После чего все элементы будет сразу отсортированы в красно-черном дереве. В самом классе TreeSet это реализовано через проверку на наличие компаратора либо реализации нашим классом интерфейса Comparable. Ну, а в данном случае мне самому нужно написать дерево, только на TypeScript.