Допустим, у нас есть этот пример:
class Base<T extends Base<T>> {}
class ClassA extends Base<ClassA> {}
class ClassB extends Base<ClassB> {}
type Condition = ClassA extends ClassB ? true : false;
Базовый класс имеет один универсальный аргумент, который в основном говорит, что все производные от него должны шаблонизировать его своим собственным типом.
Тогда мыесть 2 класса, производные от указанной базы.
Наконец, я создал условный тип, который проверяет, расширяют ли производные классы друг друга.
К моему удивлению, машинопись говорит мне, что они делают,но я думаю, что это условие должно быть ложным.ClassA
не распространяется ClassB
и наоборот.Только ClassA extends Base<ClassA>
должно возвращать true.
Это проблема условных типов машинописного текста или я что-то упустил?Я столкнулся с этой проблемой при создании более сложного условного типа, который также возвращал неожиданные результаты.
Редактировать: Общие аргументы также не нужны.Даже этот пример возвращает неверный результат:
class Base {}
class ClassA extends Base {}
class ClassB extends Base {}
type Condition = ClassA extends ClassB ? true : false;