Function overloads & call signatures
Declare overload signatures for different call shapes and use call signatures inside object types for flexible APIs.
Intro
Goal: Model functions that accept different inputs and return different outputs using overloads, and describe call signatures in object types for callback-like APIs.
Overload pattern
Overloads are declared as multiple signatures plus one implementation that narrows inputs and returns the correct type.
// 1) Overload signatures (no body)
function parse(input: string): number;
function parse(input: number): string;
// 2) Single implementation compatible with all overloads
function parse(input: string | number): string | number {
if (typeof input === "string") {
return input.length; // string -> number
} else {
return String(input); // number -> string
}
}
console.log(parse("TS")); // 2 (number)
console.log(parse(123)); // "123" (string)All lessons in this course
- Function overloads & call signatures
- this parameter typing; void, never
- Assertion functions & user-defined type guards