TypeScript error

TS2769: No overload matches the call

  • Error TS2769
  • Tested with TypeScript 5.9

error TS2769: No overload matches this call. is reported when a function has more than one call signature and the arguments fit none of them. Built-ins such as new Date(), addEventListener, Array.prototype.reduce and String.prototype.replace have several, and so does any function written with @overload tags.

The message continues with one block per signature (Overload 1 of 5 ... gave the following error.). The blocks usually say the same thing in different words; find the signature you meant to call and read its reason. In the example every overload rejects undefined.

At a glance

CodeTS2769
MessageNo overload matches this call.
TypeScript's categoryerror
Listed underTypes do not match
Turned on by No option: every checked file reports it
In .js files Reported when the file is checked: checkJs in jsconfig.json, or // @ts-check at the top of the file

The message is TypeScript's own text from its diagnostic messages file (Apache-2.0).

What it looks like

order.js Error confirmed 5.9.3 TypeScript 5.9.3, run 21 October 2026: order.js(6,19): error TS2769: No overload matches this call. Overload 1 of 5, '(value: string | number | Date): Date', gave the following error. Argument of type 'string | undefined' is not assignable to parameter of type 'string | number | Date'. Type 'undefined' is not assignable to type 'string | number | Date'. Overload 2 of 5, '(vd: VarDate): Date', gave the following error. Argument of type 'string | undefined' is not assignable to parameter of type 'VarDate'. Type 'undefined' is not assignable to type 'VarDate'. Overload 3 of 5, '(value: string | number): Date', gave the following error. Argument of type 'string | undefined' is not assignable to parameter of type 'string | number'. Type 'undefined' is not assignable to type 'string | number'. 6.0.3 TypeScript 6.0.3, run 21 October 2026: the same as 5.9.3. order.js(6,19): error TS2769: No overload matches this call. Overload 1 of 5, '(value: string | number | Date): Date', gave the following error. Argument of type 'string | undefined' is not assignable to parameter of type 'string | number | Date'. Type 'undefined' is not assignable to type 'string | number | Date'. Overload 2 of 5, '(vd: VarDate): Date', gave the following error. Argument of type 'string | undefined' is not assignable to parameter of type 'VarDate'. Type 'undefined' is not assignable to type 'VarDate'. Overload 3 of 5, '(value: string | number): Date', gave the following error. Argument of type 'string | undefined' is not assignable to parameter of type 'string | number'. Type 'undefined' is not assignable to type 'string | number'. 7.0.2 TypeScript 7.0.2, run 21 October 2026: the same as 5.9.3. order.js(6,19): error TS2769: No overload matches this call. The last overload gave the following error. Argument of type 'string | undefined' is not assignable to parameter of type 'string | number'. Type 'undefined' is not assignable to type 'string | number'. checked 21 October 2026
/** @typedef {{ id: string, shippedAt?: string }} Order */

/** @param {Order} order */
export function shippedOn(order) {
  return new Date(order.shippedAt).toLocaleDateString("en-US");error TS2769: No overload matches this call.
  Overload 1 of 5, '(value: string | number | Date): Date', gave the following error.
    Argument of type 'string | undefined' is not assignable to parameter of type 'string | number | Date'.
      Type 'undefined' is not assignable to type 'string | number | Date'.
  Overload 2 of 5, '(vd: VarDate): Date', gave the following error.
    Argument of type 'string | undefined' is not assignable to parameter of type 'VarDate'.
      Type 'undefined' is not assignable to type 'VarDate'.
  Overload 3 of 5, '(value: string | number): Date', gave the following error.
    Argument of type 'string | undefined' is not assignable to parameter of type 'string | number'.
      Type 'undefined' is not assignable to type 'string | number'.
}
new Date() with a value that may be undefined.
jsconfig.json for this example
{
  "compilerOptions": {
    "checkJs": true,
    "noEmit": true,
    "strict": true,
    "target": "es2022",
    "module": "nodenext",
    "types": []
  },
  "include": ["*.js"]
}

What causes it

  • An argument has a type that no signature accepts, often undefined from an optional property under strictNullChecks.
  • The number of arguments matches no signature.
  • A callback's parameter or return type fits none of the signatures, for example a reduce callback whose accumulator type does not match the initial value.

How to fix it

Make the argument fit one signature

Check or convert the argument before the call. Once order.shippedAt is known to be a string, the (value: string | number | Date) signature of new Date() matches.

order.js TypeScript 5.9.3 TypeScript 5.9.3, run 21 October 2026: No errors. 6.0.3 TypeScript 6.0.3, run 21 October 2026: the same as 5.9.3. No errors. 7.0.2 TypeScript 7.0.2, run 21 October 2026: the same as 5.9.3. No errors. checked 21 October 2026
/** @typedef {{ id: string, shippedAt?: string }} Order */

/** @param {Order} order */
export function shippedOn(order) {
  if (!order.shippedAt) return "Not shipped yet";
  return new Date(order.shippedAt).toLocaleDateString("en-US");
}
Check the value first, so one overload matches.
jsconfig.json for this example
{
  "compilerOptions": {
    "checkJs": true,
    "noEmit": true,
    "strict": true,
    "target": "es2022",
    "module": "nodenext",
    "types": []
  },
  "include": ["*.js"]
}

For your own @overload tags, add the missing signature

If the call is legitimate and the function is yours, add an @overload for that combination of arguments, or replace the overloads with one signature that takes a union, which the handbook recommends where it is enough.

Gotchas

  • The overload names in the message come from TypeScript's library files; VarDate in the Date example is an old Windows Script Host type you can ignore.
  • Your own functions with @overload tags report the same message; the @overload page shows how the signatures are written.

Sources

Last reviewed 20 October 2026.