Проверяет умение использовать перегрузки функций в TypeScript для описания разных сигнатур в зависимости от типов аргументов.
Перегрузки функций в TypeScript позволяют описать несколько вариантов вызова одной функции с разными типами аргументов и возвращаемых значений. Компилятор проверяет вызовы по объявленным сигнатурам, а не по реализации.
Сначала идут сигнатуры перегрузок (без тела), затем одна реализация с обобщённой сигнатурой. Снаружи видны только перегрузки, поэтому смешанные аргументы не пройдут проверку.
function combine(a: number, b: number): number;
function combine(a: string, b: string): string;
function combine(a: number | string, b: number | string): number | string {
if (typeof a === 'number' && typeof b === 'number') return a + b;
if (typeof a === 'string' && typeof b === 'string') return a + b;
throw new Error('Mixed types not allowed');
}
const n = combine(1, 2); // number
const s = combine('a', 'b'); // string
// combine(1, 'b'); // ошибка компиляцииАльтернатива — условные типы и дженерики, но перегрузки читаются проще для небольшого числа вариантов.
Итог: перегрузки стоит применять, когда функция имеет несколько чётких вариантов вызова с разными типами, а смешанные комбинации должны отсекаться на этапе компиляции.
Frontend developer
Ментор по Frontend
Полное сопровождение до оффера — без дорогих курсов, с оплатой после трудоустройства
Записаться на консультацию