Skip to main content
TS2769

No overload matches this call.

The function has several accepted signatures and your arguments fit none of them.

What it means

Overloaded functions (DOM APIs, Array.prototype.reduce, many library entry points) accept several distinct signatures. TypeScript tried each and none matched, so it reports every failed attempt — which is why this error is so long.

Read it from the bottom: the last listed overload failure is usually the signature you meant to call, and its sub-error names the actual mismatch.

Reproduce it

const totals = [1, 2, 3].reduce((acc, n) => {
  acc.push(n * 2);
  return acc;
}, []);
// No overload matches this call. ... Argument of type 'number' is not
// assignable to parameter of type 'never'  ← the [] was inferred as never[]

How to fix it

Give the generic a type argument (the reduce case)

An empty-array or empty-object seed made TypeScript infer never[] / {} and every overload then fails.

Before
[1, 2, 3].reduce((acc, n) => { acc.push(n); return acc; }, []);
After
[1, 2, 3].reduce<number[]>((acc, n) => { acc.push(n); return acc; }, []);

Fix the one argument the last overload names

You're calling the right signature with one wrong argument — the tail of the error message points at it.

Don't try to satisfy every listed overload; they're alternatives, not requirements.

Check the argument count

A missing or extra argument makes every overload fail at once, producing a wall of text for what is really an arity mistake.

addEventListener(type, handler, options) with the handler forgotten, or setTimeout(fn) with the delay dropped where a signature requires it — count your arguments against the signature you intended before touching any types.

Suppressing it

Rarely. If a library's overloads genuinely can't describe your (valid) call, an as on the problem argument is more targeted than suppressing the whole call.

Related errors

Hitting this while migrating to TypeScript?

Convert JavaScript to TypeScript deterministically — imports rewritten, JSDoc promoted to real types, class fields declared. No guessed types.

Open the converter