我收到了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