javascript – “export {foo as default}”有效的ES2015?

前端之家收集整理的这篇文章主要介绍了javascript – “export {foo as default}”有效的ES2015?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我收到了关于我的ES2015模块导入/导出验证插件的一个 issue on GitHub,用于ESLint不能以下列语法识别默认导出:
export { 
    foo as default,bar
}

我的插件将在下面的(相当的)语法中没有问题:

export default foo;
export const bar = ..;

BabelEsprima都解析相似的语法没有错误,这适用于使用Babel在两端(导入和导出)的代码.

但是,我不相信spec允许以前的导出{x作为默认}形式:

For each IdentifierName n in ReferencedBindings of ExportClause : It is a Syntax Error if StringValue of n is a ReservedWord or if the StringValue of n is one of: “implements”,“interface”,“let”,“package”,“private”,“protected”,“public”,“static”,or “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'

所以,总结:是导出{foo作为默认}在ES2015中导出默认值的有效方法

解决方法

是的,ReferencedBindings仅指第一个IdentifierName.所以
export { default as something } // or
export { default }

是无效的,但是

export { something as default }

不是. ESLint需要在这里修复.

猜你在找的JavaScript相关文章