Чтобы заработал именно синтаксис (10).plus(10).minus(5), методы нужно добавить в Number.prototype. Они возвращают число, которое при следующем обращении к методу снова автоматически оборачивается.
Методы .plus() и .minus() с поддержкой цепочек для чисел
Чтобы заработал именно синтаксис (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.