When working with TypeScript, you may encounter the error message “No overload matches this call” during compilation or when calling a function with incorrect arguments.
This error occurs when the TypeScript compiler cannot find a matching overload for a function call based on the provided arguments.
It typically presents itself something like this:

In this article, we will explore various solutions ranked from the best fixes to the worst, helping you resolve the “No overload matches this call” error in TypeScript.
Understanding the Error
To effectively resolve the “No overload matches this call” error, it’s crucial to understand its cause.
The “No overload matches this call” error indicates that the TypeScript compiler couldn’t find a suitable overload for a function call based on the provided argument types.
It often occurs when the argument types or the number of arguments don’t match any available function overloads.
Check Function Overloads and Usage
The first step in resolving this error is to review the function overloads and how the function is used.
Look for mismatches in argument types or incorrect usage that could lead to the error. Here’s an example of a function with multiple overloads:
function greet(name: string): void;
function greet(name: string, age: number): void;
function greet(name: string, age?: number) {
// Function implementation
}
If the function is called with incorrect arguments, such as passing only a string when the second overload expects a number, the “No overload matches this call” error can occur.
Verify Argument Types and Order
Ensure that the argument types and their order match the defined function overloads.
If the function is expecting specific types or a certain number of arguments, verify that you are providing the correct arguments in the correct order.
Here’s an example:
function sum(a: number, b: number): number {
return a + b;
}
const result = sum("1", 2); // Error: Argument of type '"1"' is not assignable to parameter of type 'number'
In this example, passing a string instead of a number as the first argument will result in the error.
Use Type Assertions
If you are certain that the argument types are correct, but TypeScript is still throwing the error, you can use type assertions to inform the compiler about the expected types.
Type assertions allow you to override the inferred types for specific variables or expressions.
Here’s an example:
function printLength(str: string | string[]): void {
const length = (str as string).length; // Type assertion
console.log(length);
}
By using the type assertion (str as string)
, you inform TypeScript to treat str
as a string type, even if it has a union type.
Update Function Overloads
If the existing function overloads don’t cover all possible argument scenarios, you can update the overloads to accommodate the required types or number of arguments.
Here’s an example:
function greet(name: string): void;
function greet(name: string, age: number): void;
function greet(name: string, age?: number, city?: string): void {
// Function implementation
}
By adding an additional overload with an extra optional argument, you can cover cases where the function may be called with three arguments.
Seek Assistance from the TypeScript Community
If you have exhausted all the above solutions and the error still persists, seeking assistance from the TypeScript community can be beneficial.
Platforms like Stack Overflow, TypeScript’s official GitHub repository, or developer forums can provide additional insights and guidance specific to your scenario.
Final Thoughts
The “No overload matches this call” error in TypeScript indicates a mismatch between function overloads and the provided arguments.
By understanding the error, verifying argument types and order, using type assertions, updating function overloads, or seeking assistance from the TypeScript community, you can resolve this error and ensure the proper usage of functions in your TypeScript code.
Remember to review the function overloads and argument requirements carefully to align them with your code’s intentions and improve type safety.

Abhinav worked as a software engineer at numerous startups and large enterprises for over 12 years. He has worked on a variety of projects, from developing software to designing hardware. He is passionate about tinkering with computers and learning new things. He is always looking for new ways to use technology to solve problems and make people’s lives easier. That is the inspiration behind https://foxrunsoftware.net. Abhinav created FoxRunSoftware to address common errors and issues faced by engineers and non-engineers alike!