На собеседовании
«Overloads — несколько публичных сигнатур вызова над одной реализацией; ключевое — сигнатура implementation скрыта: снаружи видны только overloads, вызов, подходящий лишь под impl, не пройдёт проверку типов. TypeScript выбирает первую совместимую перегрузку по порядку, а не «лучшую» — сначала узкие, потом общие. Overloads нужны, когда значение аргумента определяет несвязанный тип результата без индексируемой связи — как DOM createElement. Чаще generic с lookup или одна union-сигнатура честнее и не даёт публичному контракту разъехаться с телом. Overloads — крайний случай.»
Итог
Публичные overloads vs скрытая impl, порядок сигнатур, когда generic лучше.