Как обезопасить функцию подсчёта суммы, если бэкендер может прислать некорректные данные (undefined, строки вместо чисел)?

Проверяйте тип и допустимость входов до вычисления; не подменяйте ошибочные данные нулём без согласованного бизнес-правила.

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

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

Проверяйте тип и допустимость входов до вычисления; не подменяйте ошибочные данные нулём без согласованного бизнес-правила.

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

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

Проверяйте тип и допустимость входов до вычисления; не подменяйте ошибочные данные нулём без согласованного бизнес-правила.

Например:

function sum(a, b) {
  if (!Number.isFinite(a) || !Number.isFinite(b)) throw new TypeError('Ожидаются конечные числа');
  const result = a + b;
  if (!Number.isFinite(result)) throw new RangeError('Переполнение');
  return result;
}

Строки и undefined отклоняются. Если строки разрешены контрактом, преобразуйте и проверяйте их явно на внешней границе.

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

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

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

Подробнее