0Pricing
TypeScript Academy · Lesson

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

  1. Function overloads & call signatures
  2. this parameter typing; void, never
  3. Assertion functions & user-defined type guards
← Back to TypeScript Academy