АИ
При выводе типа из примитивного значения TS, как правило, обобщает тип (
true до boolean, 0 до number), но есть несколько исключений, и здесь срабатывает одно из них (третье в общем списке).Исключение можно сформулировать так: при вызове функции её тип-параметр
T остаётся точным (не обобщается), если на него есть extends-ограничение (T extends number), или если он в точности является возвращаемым типом функции (<T>(...): T {...}).Поэтому, когда функция возвращает
T, её тип возвращаемого значения от аргумента true (определяющего T) вычисляется в true, а при возвращении [T] тип T обобщается, и функция возвращает [boolean]: play.



