Вот минимальный пример:
function Test<T>(obj: T) {
for (let key in obj) {
let prop = obj[key];
if (typeof prop === 'function') {
prop();
}
}
}
TypeScript не скомпилирует это, говоря, что prop
внутри блока if
имеет тип "never".
Error TS2349 (TS) Cannot invoke an expression whose type lacks a call signature. Type 'never' has no compatible call signatures.
Но в JavaScript функции могут и часто являются ключевыми свойствами объектов. Так в чем здесь проблема?