В приведенном ниже фрагменте машинописный текст не выдает ошибок, хотя есть аргумент, неявно набранный как any
.
declare function constrainedHOF<T extends (...args: any[]) => any>(callback: T): T;
// x is implicitly any, but typescript does not complain
const hof = constrainedHOF(x => {
console.log(x);
});
Я предполагаю, что проблема заключается в ограничении типа T extends (...args: any[]) => any
, которое заставляет машинописный текст думать, что это явный any
.
Как правильно решить эту проблему, сохраняя ограничение общего типа функцией любого типа и заставляя машинописный текст жаловаться на неявное any
, когда он встречает случайно нетипизированный обратный вызов внутри constrainedHOF
?
Протестировано в последней стабильной версии Typescript 3.9.2.
Я подготовил Playground Ссылка, который демонстрирует проблему, включающую в себя убедитесь, что проблема действительно связана с общим ограничением.