TS2349: Cannot invoke an expression whose type is not a function

TS2349 hiba: ellenőrizd, hogy a változó valóban függvény-e mielőtt meghívod.

expression is not a function TypeScript

Hibaüzenet

TS2349: Cannot invoke an expression whose type is not a function

Hibás kód

let maybeFunc: any = 5;
maybeFunc();

Javított kód

if (typeof maybeFunc === 'function') {
  maybeFunc();
}

Magyarázat

Expression is not a function hiba akkor fordul elő, amikor olyan változót próbálsz meghívni függvényként, ami nem rendelkezik call signaturesszel (pl. szám vagy objektum). A TypeScript ilyenkor hibát dob. A megoldás, hogy ellenőrzöd a típusát (`typeof maybeFunc === ‘function’`), vagy a változó típusát pontosabbra definiálod (`() => void`), hogy a fordító tudja, hogy hívható.

További információ: TypeScript Function Types