> Как работает перегрузка функций в TypeScript (TypeScript)
Уровень: senior · Роль: frontend · Категория: Технические вопросы
Компании: ООО Премиум ИТ Солюшен
Стек: TypeScript
> Пример ответа
В TypeScript перегрузка функций (function overloading) - это механизм, позволяющий объявить несколько сигнатур для одной функции, чтобы она могла принимать аргументы разных типов и возвращать соответствующие результаты. Реализация отличается от языков вроде C++ или Java: в TypeScript перегрузка - это только объявление типов, а не несколько тел функции.
Работает так: вы пишете несколько «сигнатур перегрузки» (overload signatures) перед основной реализацией. Компилятор использует их для проверки типов при вызове. Сама реализация (implementation signature) должна быть совместима со всеми перегрузками, но не обязана быть видимой для внешнего кода.
Пример:
TYPESCRIPT// Сигнатуры перегрузкиfunction process(value: string): string;function process(value: number): number;// Реализация (implementation)function process(value: string | number): string | number {if (typeof value === 'string') {return value.toUpperCase();} else {return value * 2;}}// Использованиеconst a = process('hello'); // тип stringconst b = process(42); // тип number
Ключевые моменты:
-
Порядок сигнатур важен: TypeScript выбирает первую подходящую.
-
Реализация не учитывается для внешних вызовов - её тип не проверяется напрямую, но она должна покрывать все варианты.
-
Перегрузка часто используется для улучшения типизации API, например, в функциях, которые принимают разные форматы данных (строку, массив, объект) и возвращают соответствующий результат.
Таким образом, перегрузка в TypeScript - это инструмент статической типизации, а не динамического полиморфизма.
> Похожие задачи по frontend
Как TypeScript влияет на производительность в продакшн
Можно ли создать второй интерфейс на основе первого, включающий все его поля, и как это сделать в TypeScript?
Зачем в setState передавать callback вместо значения
Как преобразовать объект arguments в массив в JavaScript
> ГОТОВЫ К СЛЕДУЮЩЕМУ СОБЕСЕДОВАНИЮ?
Запустите тренировочную сессию с ИИ и получите детальную обратную связь, чтобы увереннее проходить реальные интервью