Типовой инвертор: из строки в число и обратно

Задайте перегрузки string → number и number → string, а реализацию напишите для объединения. Синтаксис function test = (...) в условии нужно исправить.

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

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

Задайте перегрузки string → number и number → string, а реализацию напишите для объединения. Синтаксис function test = (...) в условии нужно исправить.

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

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

Условие

Задача состоит в том, чтобы задать типы функции так, чтобы её результат имел противоположный тип входному параметру. На вход функция получает значение типа string или number. Если передано строковое значение, функция должна вернуть число, а если передано число — строку.

function test = (input) {}

Ответ

Задайте перегрузки string → number и number → string, а реализацию напишите для объединения. Синтаксис function test = (...) в условии нужно исправить.

function test(input: string): number;
function test(input: number): string;
function test(input: string | number): string | number;
function test(input: string | number): string | number {
  return typeof input === 'string' ? Number(input) : String(input);
}

При test('12') TypeScript выводит number, при test(12) — string. Третья перегрузка позволяет передать переменную с типом string | number. Преобразование строки может дать NaN: тип number включает его, поэтому для строгого числового ввода нужна дополнительная проверка. Перегрузки не заменяют runtime-валидацию.

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

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

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

Подробнее