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

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

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

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

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 может быть любым выражением.

Таким образом, Esprima кажется неправильным.