Question

I'm using the es6-module-transpiler, esprima and JSHint with esnext: true options. JSHint complains when I put:

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

But esprima complains when I use

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

The spec says

export default AssignmentExpression ;

Which makes me think that JSHint needs updating and esprima is properly bombing out because there isn't an assignment. Can someone be the deciderer for me here?

Était-ce utile?

La solution

Actually an AssignmentExpression can be any expression, it's the expression at the top most level, the one that contains all other expressions (see the spec).

However,

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

really isn't an assignment expression it's a syntax error. If you use the assignment operator in an assignment expression, then you need a left hand side and a right hand side. So something like this would be valid:

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

Just using an object literal should be correct, because, as I said, an AssignmentExpression can be any expression.

So Esprima seems to be wrong.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top