Нужно написать TypeScript-тип, который будет подходить и для функции, возвращающей number, и для функции, возвращающей string (через generic), но не должен проходить, если типы возвращаемых значений разные.

Общий возвращаемый тип можно задавать параметром T, но объединение number|string само по себе не запрещает смешанные функции.

Короткий ответ

Что ответить на собеседовании

Общий возвращаемый тип можно задавать параметром T, но объединение number|string само по себе не запрещает смешанные функции.

Подробный разбор

Ответ с пояснениями

Общий возвращаемый тип можно задавать параметром T, но объединение number|string само по себе не запрещает смешанные функции.

Для явно выбранного типа подойдёт type Pair<T extends number | string> = [() => T, () => T]. Тогда Pair<number> требует два числовых результата, а Pair<string> — два строковых. Pair<number | string> разрешит смесь; если нужны только две однородные альтернативы, используйте Pair<number> | Pair<string>. Правила вывода T нужно обсуждать отдельно.

ИИ-помощник для собеседований

Хочешь уверенно проходить собеседования?

Попробуй ИИ-помощник для собеседований: слышит вас и собеседника, анализирует экран, подсказывает ответы в реальном времени, работает без VPN и не попадает в захват экрана.

Подробнее