ES6 Модуль экспорта по умолчанию синтаксис

Я использую es6-модуль-транспортер, esprima и JSHint с esnext: true опции. JSHint жалуется, когда я положил:

export default = { some: 'thing', other: 'thing' };

Но Эсприма жалуется, когда я использую

export default { some: 'thing', other: 'thing' };

Спецификация говорит

export default AssignmentExpression ;

Это заставляет меня думать, что JSHint нуждается в обновлении, а esprima правильно бомбардирует, потому что нет назначения. Может ли кто-то быть решающим для меня здесь?

1 ответ

Решение

Фактически, AssignmentExpression может быть любым выражением, это выражение на самом верхнем уровне, которое содержит все остальные выражения (см. Спецификацию).

Тем не мение,

export default = { some: 'thing', other: 'thing' };

на самом деле это не выражение присваивания, это синтаксическая ошибка. Если вы используете оператор присваивания в выражении присваивания, то вам нужны левая и правая части. Так что что-то вроде этого будет действительным:

export default foo = { some: 'thing', other: 'thing' };

Просто использование литерала объекта должно быть правильным, потому что, как я уже сказал, выражение AssignmentExpression может быть любым выражением.

Так что, кажется, Эсприма ошибается.

Другие вопросы по тегам