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

**Code:** `TS2349: This expression is not callable` · **Category:** TypeScript · **Seen on:** TypeScript

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

## 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?

---
Source: [WhatIsMyError](https://whatismyerror.com/errors/typescript/ts2349-this-expression-is-not-callable)
