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?
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.