Задать вопрос
Login8
@Login8
Программист, критик, наватор

Почему не возвращается значение из модуля?

Есть 2 файла:

test1.js:

import JSBI from './jsbi.js';
console.log( JSBI.BigInt('TEST!') );

jsbi.js:

class JSBI extends Array {
  static BigInt(arg) {
    return arg;
  }
}
export default { JSBI, BigInt };

Когда вызываю test1.js командой "node test1.js", то выскакивает ошибка:

SyntaxError: Cannot convert TEST! to a BigInt
Я же ничего не преобразовываю, а просто вызываю метод BigInt класса JSBI, он должен просто вернуть "TEST!".
В чём дело?
  • Вопрос задан
  • 83 просмотра
Подписаться 1 Средний Комментировать
Помогут разобраться в теме Все курсы
  • Нетология
    Веб-разработчик с нуля: профессия с выбором специализации
    14 месяцев
    Далее
  • Академия Эдюсон
    Fullstack-разработчик на JavaScript + ИИ
    11 месяцев
    Далее
  • ProductStar × РБК
    Профессия: Инженер по тестированию + ИИ
    6 месяцев
    Далее
Решения вопроса 1
mmmaaak
@mmmaaak
Когда ты в файле jsbi.js экспортируешь как default объект { JSBI, BigInt } ты по сути наружу экспортировал объект:
{
JSBI: JSBI,
BigInt: BigInt
}

где BigInt это стандартная функция JavaScript-а, которая преобразует переданный аргумент в тип BigInt, потом ты импортируешь весь этот объект в файле test1.js, по сути весь этот объект
{
JSBI: JSBI,
BigInt: BigInt
}
теперь сохранен в переменной JSBI, и когде ты вызываешь JSBI.BigInt, ты вызываешь не статический метод класса (чтоб вызвать его нужно было написать JSBI.JSBI.BigInt() ), а вызываешь метод BigInt который преобразуед аргумент в тип, поэтому он и ругается, так как строка не может быть в него преобразована
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы