Я использую современный код Javascript (EC6+) с node --experimental-modules.
import bigInt from 'big-integer'; // npm i big-integer
console.info(bigInt(333).toString(2)) // fine
class bigIntB4 extends bigInt {
constructor(...args) {
super(...args);
}
test() {
console.info("Hello!")
}
}
let c = new bigIntB4(333) //fine
console.info(c.toString(2)) // fine
c.test() // BUG!
Ошибка: «TypeError: c.test не является функцией»





bigInt не является конструктором. Это обычная функция, которая возвращает объект. Таким образом, вы не можете действительно расширить его.
Вот упрощенный пример проблемы:
function Foo() {
return {foo: 42};
}
class Bar extends Foo {
constructor() {
super();
}
}
console.info(new Bar instanceof Bar);
console.info(new Bar);Значение, возвращаемое new Bar, является значением, возвращаемым Foo, которое не является расширением Bar.prototype.
Если вам нужно только добавить новый метод как минимум, вы можете изменить прототип:
bigInt.prototype.test = function () {
console.info("Hello!");
};
Спасибо Феликс! Да, теперь я вижу Исходный код модуля bigInt, это выражается в (уродливом) "старом стиле" для модулей... Ну, как вы показали, это невозможно без перезаписи. Дидактический ответ.