Short answer
Read the error under the overload you meant to call (if unsure, the one whose parameters look closest to your arguments); that inner message is the real problem. If an argument is a union (string or array, say), each overload accepts only one side, so narrow it first. If an argument might be undefined, handle that first; overloaded functions such as new Date() report it this way. If a library call that should work fails, check that its @types version matches the library version.
Why no signature fits, and the fix
01
A union argument that each overload only half accepts
“TypeScript can only resolve a function call to a single overload” TypeScript, More on functions: overloads
If one overload takes a string and another takes an array, a value that might be either matches neither. Narrow it so one call fits, or change the function to take the union.
declare function len(x: string): number; declare function len(x: any[]): number; const input: string | string[] = getInput(); const n = typeof input === 'string' ? len(input) : len(input);02
An argument that might be undefined, or an untyped empty array
new Date(value) with value: string | undefined fits none of the Date constructor overloads, and [].concat(items) on an untyped empty array (never[]) fails the same way. Handle the undefined case first, and give empty arrays a type.
const created = value ? new Date(value) : null; const all: number[] = []; const merged = all.concat(items);03
A library call with mismatched types
React, Node.js and Express calls fail this way when @types/react, @types/node or @types/express does not match the installed library, or when two copies of the types are installed. Align the versions and run npm ls @types/react to spot duplicates.
npm ls @types/react @types/node04
When you write overloads yourself
“Always prefer parameters with union types instead of overloads when possible” TypeScript, More on functions: writing good overloads
Callers see only the overload signatures, never the implementation signature. If a union parameter would do, it is simpler than overloads and gives clearer errors.
Checked against the vendor’s docs on : TypeScript Handbook: More on functions (overloads).
Rather hand it over?
Fixed scope, fixed price, paid upfront. The work happens in writing; no call needed.
- from $450App Fix TicketOne reproducible bug in an existing mobile or web app, diagnosed and fixed.See scope and start
- from $450AI-Built App RescueA Lovable, Bolt or Cursor app checked end to end in 3 days, then its worst problems fixed at a fixed price.No issues worth fixing, no charge. If the Launch Check finds nothing rated medium or higher, Simon refunds the full $450. You keep the report either way. This applies to the first 10 Launch Checks bought after October 30, 2026.See scope and start
Related: TypeScript “Argument of type is not assignable to parameter” · TypeScript “Type is not assignable to type” · TypeScript “implicitly has an any type”