Что такое перегрузка функции в TypeScript

«Что такое перегрузка функции в TypeScript» — вопрос из категории TypeScript, который задают на 10% собеседований Frontend Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Перегрузка функции в TypeScript позволяет определить несколько сигнатур для одной функции, чтобы она могла принимать разные типы параметров и возвращать разные типы значений. Это полезно, когда функция может работать с разными входными данными.

function greet(name: string): string;
function greet(names: string[]): string[];
function greet(input: string | string[]): string | string[] {
  if (typeof input === 'string') {
    return `Hello, ${input}`;
  } else {
    return input.map(name => `Hello, ${name}`);
  }
}

const single = greet('Alice'); // string
const multiple = greet(['Bob', 'Charlie']); // string[]

Важно: реализации должна быть совместима со всеми перегрузками. TypeScript будет использовать первую подходящую перегрузку при вызове функции.