TS2349: This expression is not callable TypeScript Origin: On your device OSI layer 7 · Application Last updated 5 Nov 2026

TypeScript: error TS2349: This expression is not callable. Type 'X' has no call signatures.

You called something TypeScript believes isn't a function (a union without compatible signatures, a module namespace, an object).

Exact message you may see error TS2349: This expression is not callable.This expression is not callable. Type 'X' has no call signatures.TS2349: This expression is not callableEach member of the union type has signatures, but none of those signatures are compatible with each othererror TS2349
Seen on: TypeScript

Meaning

Check the type: typeof x. Common causes: calling a default-imported module wrongly (esModuleInterop), a union of functions with different parameters, or calling an object/optional function without a guard. Narrow (typeof fn === "function"), fix the import form, or cast to the right function type.

Common causes

  • import foo from "cjs" without esModuleInterop
  • Union of function types with incompatible params
  • Calling a possibly-undefined function
  • Calling a class without new
  • Variable shadowing

⚡ Quick fix

  1. Fix import style (import * as x / import x = require()/ enable esModuleInterop)
  2. Narrow: if (typeof cb === "function") cb()
  3. Use new for classes

Detailed fix by platform

TypeScript

  1. if (typeof callback === "function") { callback(value); }

How to diagnose

  1. Type — Callable?
  2. Import — Interop?
  3. Union — Compatible?

🔧 Still not fixed?

Many errors look alike. If the steps above didn’t solve it, one of these is probably what you’re facing:

Where this error sits

Origin: On your device. Errors that are often confused with or caused by this one (click to open):

Cannot find module './App.vue' or its corresponding type declarations — TypeScript: error TS2307: Cannot find module './App.vue' or its corresponding type declarations. (Vue)Cannot find module '.…TS1005: ';' expected / ',' expected (syntax error) — TypeScript: error TS1005: ';' expected. (TypeScript)TS1005: ';' expected …TS1259: Module can only be default-imported using the 'esModuleInterop' flag — TypeScript: error TS1259: Module '"express"' can only be default-imported using the 'esModuleInterop' flag (TypeScript)TS1259: Module can on…TS2366: Function lacks ending return statement — TypeScript: error TS2366: Function lacks ending return statement and return type does not include 'undefined'. (TypeScript)TS2366: Function lack…TS2393: Duplicate function implementation — TypeScript: error TS2393: Duplicate function implementation. (TypeScript)TS2393: Duplicate fun…TS2554: Expected N arguments, but got M — TypeScript: error TS2554: Expected 2 arguments, but got 1. (TypeScript)TS2554: Expected N ar…TS2604: JSX element type does not have any construct or call signatures — TypeScript: error TS2604: JSX element type 'Foo' does not have any construct or call signatures. (TypeScript)TS2604: JSX element t…TS2693: 'X' only refers to a type, but is being used as a value here — TypeScript: error TS2693: 'User' only refers to a type, but is being used as a value here. (TypeScript)TS2693: 'X' only refe…TS2349: T…

Explore the map of this error Full error map →

🧠 Still stuck? Analyze your error

Paste the full message, response headers or stack trace — we'll detect the platform and point to the most likely cause.

💬 What worked for others

No tips yet — did something else fix this for you?

Share what worked for you

Tips are checked by an editor before they appear. Links are removed.