Всем привет.
Картина маслом (и сыром):
function call<F extends () => unknown>(f: F): ReturnType<F> {
return f()
}
Казалось бы, в чем проблема? Но увы, "TS2322: Type 'unknown' is not assignable to type 'ReturnType '" на строке с return.
Если заменить
unknown на любой другой тип, тоже ругается. И только богомерзкое
any, а так же бесполезное в данной ситуации
never возвращаются без ошибок.
Выглядит так, будто ReturnType забывает, что он по сути возвращаемое значение для f. Чего это он?