Задайте перегрузки 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-валидацию.