我收到了issue on GitHub关于我的ESLint无法识别default
出口以下语法ES2015模块导入/导出验证插件:`export {foo as default}`有效的ES2015?
export {
foo as default,
bar
}
在我的插件将皮棉以下(等效量)语法没有问题:
export default foo;
export const bar = ..;
两个Babel和Esprima分析没有错误类似的语法,这两端(进出口)用巴贝尔工程代码。
不过,我不相信的spec允许前export { x as default }
形式:
对于每个
IdentifierName
n
在ExportClause
ReferencedBindings
:这是一个语法错误,如果n个的StringValue是ReservedWord或者如果的StringValue n是“implements”,“interface”,“let”,“package”,“private”,“protected”,“public”,“static”或“yield”中的一个。
ReservedWord
does include default
,但我认为人们可能认为ReferencedBindings
所指specifically to the module-local identifier names正在出口(即foo
),而不是导出的名称本身。
它通常也似乎是一个奇怪的事情,能够出口保留字;巴贝尔愉快地也将允许像
// ./foo.js
export { foo as yield }
// ./mod.js
import { yield as nonReservedIdentifier } from './foo'
因此,简言之:是export { foo as default }
导出默认ES2015有效的方法是什么?
但是,在这种情况下,'default'是名为'default'的命名导出还是实际的'default'导出? –
我想[进口规格](http://www.ecma-international.org/ecma-262/6.0/#sec-static-semantics-importentriesformodule)表明它是两个。 –
是的,默认导出只是一个名为'default'的导出绑定。这是这么说的,除了有导出/导入默认导出的特殊语法,否则'default'是一个无效的本地标识符。 – Bergi