Y> =
(<T>() => T extends X ? 1 : 2) extends
(<T>() => T extends Y ? 1 : 2) ? true : false
то же самое, что и () => any, наверное
дженерик функция здесь нужна чтобы отложить вычисление условного типа
крч вот это хак для точного сравнения типов, он возвращает true только если A и B идентичны
а зачем откладывать вычисление условного типа?
чтобы сравнивались сами условные типы а не их результаты
если ты напишешь например 1 extends 2 ? true : false то он сразу вычислится и дальше ты будешь работать с false. Если туда запихать дженерик то сразу вычислиться тип не сможет и будут сравниваться именно T extends X ? 1 : 2. Для сравнения таких типов чекер проверяет тип после extends на точное равенство.
Я даже синтаксически не могу понять полную конструкцию: Мы определяем Equals с X, Y дженериками. Далее определяем тип функции, которая принимает дженерик T и уточняет, что он равен X, возращая 1 или 2. С помощью какой конструкции мы вызываем эту функцию? Когда вызывается вторая анонимная функция?
Обсуждают сегодня