gpt4 book ai didi

javascript - `export { foo as default }` 是有效的 ES2015 吗?

转载 作者:数据小太阳 更新时间:2023-10-29 04:06:55 24 4
gpt4 key购买 nike

我收到了 issue on GitHub关于我的 ESLint ES2015 模块导入/导出验证插件无法识别以下语法中的 default 导出:

export { 
foo as default,
bar
}

我的插件将在哪里检查以下(等效的?)语法没问题:

export default foo;
export const bar = ..;

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

但是,我不相信 spec允许以前的 export { x as default } 形式:

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

保留字 does include default ,尽管我认为有人可能会争辩说 ReferencedBindings 指的是 specifically to the module-local identifier names正在导出(即foo)而不是导出名称本身。

能够导出保留字通常看起来也很奇怪; Babel 也很乐意允许类似

// ./foo.js
export { foo as yield }
// ./mod.js
import { yield as nonReservedIdentifier } from './foo'

因此,总而言之:export { foo as default} 是在 ES2015 中导出默认值的有效方法吗?

最佳答案

是的,ReferencedBindings仅指第一个 IdentifierName。所以

export { default as something } // or
export { default }

无效,但是

export { something as default }

不是。 ESLint 需要在此处进行修复。

关于javascript - `export { foo as default }` 是有效的 ES2015 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33155785/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com