Методы .plus() и .minus() с поддержкой цепочек для чисел

Чтобы заработал именно синтаксис (10).plus(10).minus(5), методы нужно добавить в Number.prototype. Они возвращают число, которое при следующем обращении к методу снова автоматически оборачивается.

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

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

Чтобы заработал именно синтаксис (10).plus(10).minus(5), методы нужно добавить в Number.prototype. Они возвращают число, которое при следующем обращении к методу снова автоматически оборачивается.

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

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

Условие

Необходимо расширить поведение числового типа, добавив методы .plus(value) и .minus(value). Каждый из методов должен возвращать результат вычисления, позволяя вызывать их последовательно в одной цепочке. Пример использования:

(10).plus(10).minus(5); // 15

Ответ

Чтобы заработал именно синтаксис (10).plus(10).minus(5), методы нужно добавить в Number.prototype. Они возвращают число, которое при следующем обращении к методу снова автоматически оборачивается.

Object.defineProperties(Number.prototype, {
  plus: { configurable: true, writable: true, value: function (value) {
    return this.valueOf() + value;
  } },
  minus: { configurable: true, writable: true, value: function (value) {
    return this.valueOf() - value;
  } }
});
(10).plus(10).minus(5); // 15

Свойства неперечисляемые по умолчанию. Аргументы предполагаются числами. Это учебное расширение: изменение встроенных прототипов может конфликтовать с библиотеками и будущими API. В приложении безопаснее отдельная обёртка или обычные функции; для TypeScript потребуется также декларация методов интерфейса Number.

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

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

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

Подробнее