Как использовать необязательную цепочку в Node.js 12

17

Необязательная obj?.param1?.param2функция chaining ( ) кажется отличной функцией, и я действительно хотел, чтобы она была реализована и, наконец, избавилась от вложенных if, произвольных функций и того, что не для такой простой операции.

Но есть проблема, она не работает. Я обновился до Node 12 и все еще получаю ошибку:

var dude = res?.param?.params[0]
SyntaxError: Unexpected token '.'

или

var dude = res.param?.params[0]
SyntaxError: Unexpected token '.'

В чем проблема?

Нужно ли мне изменить настройки языка или загрузить библиотеку, чтобы включить эту функцию? Или это просто еще не вышло?

almarc
источник
2
Это в Stage 4. Node.js пока не поддерживает это. developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/…
Шридхар
Я искал 'распространение нулевого узла' и изначально не мог найти этот вопрос. Надеюсь, этот комментарий улучшит возможности поиска.
Казимир
Боюсь, я ничего не могу с этим поделать. Для этого есть тег, но он не связан с Javascript и вызовет больше путаницы, чем принесет пользу.
Альмарк

Ответы:

17

Необязательная цепочка в настоящее время не поддерживается в Node.jsверсии 13, и ниже она будет поддерживаться в Node.jsверсии 14 и большинстве браузеров при его перемещении Stage 4. В настоящее время его поддерживают несколько платформ. Вы можете найти список платформ, поддерживающих опциональную цепочку по данной ссылке . Вы можете включить опционально используя --harmonyфлаг.

Балай Хан
источник
10

Спецификация для дополнительной функции цепной только продвинет на стадию 4 (Закончено) на 22 декабря 2019 года . Узел 12 вышел до того, как спецификация была окончательной, и так же как и Узел 13, если на то пошло.

Согласно node.green , необязательное сцепление будет поддерживаться начиная с узла 14, но все равно потребуется --harmonyфлаг. (Кажется, это противоречит описанию Node --harmonyфлага - для функций доставки V8 не требуется флаг - поэтому я не уверен, что с этим делать.) Тем не менее, нужен ли ему флаг или нет, я бы не стал Не ожидайте увидеть эту функцию до выхода Node 14 примерно в апреле 2020 года .

Если вы хотите поиграть с опциональной цепочкой сегодня, лучше всего использовать TypeScript (который добавил опциональную цепочку в версии 3.7 ) или препроцессор, такой как Babel .

Джо Уайт
источник
10

Мне удалось использовать nodejs v13.7.0 с флагом --harmony.

узел --harmony myCode.js

Дина

не определено

не определено

//myCode.js

const adventurer = {
  name: 'Alice',
  cat: {
    name: 'Dinah'
  }
};

const catName = adventurer.cat?.name;
console.log(catName);
// expected output: Dinah
const dogName = adventurer.dog?.name;
console.log(catName);
//expected output: undefined

console.log(adventurer.someNonExistentMethod?.())
//expected output: undefined
user3283069
источник
0

Опциональная цепочка будет реализована с Node.jsверсией v14, которая выйдет 20/04/2020. К настоящему времени вы можете использовать Babelс @babel/plugin-proposal-optional-chaining.

Чема
источник