私はESLintは、次の構文でdefault
輸出を認識しないための私のES2015モジュールのインポート/エクスポートの検証プラグインについてissue on GitHubを受け`export {foo as default}`は有効ですか?ES2015?</p> <pre><code>export { foo as default, bar } </code></pre> <p>私のプラグインは、以下の(?相当)lintのでしょう構文は何の問題:
export default foo;
export const bar = ..;
両方BabelとEsprimaがエラーなしで同様の構文を解析し、その両端(インポートおよびエクスポート)にバベルを使用してコードのために働きます。 STRINGVALUEがnのReservedWordまたはSTRINGVALUE場合であればそれは構文エラーです:ExportClause
のReferencedBindings
の各IdentifierName
n
に対して
:
はしかし、私はspec前者
export { x as default }
フォームすることができます確信していません「実装」、「インターフェース」、「let」、「package」、「private」、「protected」、「public」、「static」、「yield」のいずれかです。
ReservedWord
does include default
に、私は1つのReferencedBindings
がエクスポート名自体を(すなわちfoo
)をエクスポートしていないされているspecifically to the module-local identifier namesを参照していると主張することができると思うけれども。
一般に、予約語をエクスポートすることは奇妙なことのようです。バベルは喜んでも要約で、だから、
// ./foo.js
export { foo as yield }
// ./mod.js
import { yield as nonReservedIdentifier } from './foo'
のようなものができるようになります:export { foo as default }
はES2015にデフォルトをエクスポートするための有効な方法は何ですか?
この場合、 'default'は' default'または実際の 'default'エクスポートと呼ばれる名前付きエクスポートですか? –
私は[import spec](http://www.ecma-international.org/ecma-262/6.0/#sec-static-semantics-importentriesformodule)はそれが両方であると推測します。 –
はい、デフォルトのエクスポートは 'default'という名前のエクスポートされたバインドです。両方ともそうですが、デフォルトのエクスポートをエクスポート/インポートするための特別な構文があり、 'default'は無効なローカル識別子です。 – Bergi