noImplicitAny не работает с универсальной функцией более высокого порядка

В приведенном ниже фрагменте машинописный текст не выдает ошибок, хотя есть аргумент, неявно набранный как 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 Ссылка, который демонстрирует проблему, включающую в себя убедитесь, что проблема действительно связана с общим ограничением.


person amik    schedule 23.07.2020    source источник


Ответы (1)