मैं ESLint निम्न सिंटैक्स में default
निर्यात पहचान नहीं के लिए मेरे ES2015 मॉड्यूल आयात/निर्यात मान्य प्लगइन के बारे में एक issue on GitHub प्राप्त`निर्यात {foo डिफ़ॉल्ट के रूप में}` वैध ES2015 है?</p> <pre><code>export { foo as default, bar } </code></pre> <p>जहाँ मेरे प्लगइन निम्नलिखित (? समकक्ष) एक प्रकार का वृक्ष होगा वाक्य रचना में कोई समस्या नहीं:
export default foo;
export const bar = ..;
दोनों Babel और Esprima त्रुटियों के बिना समान वाक्य रचना को पार्स, और यह दोनों सिरों (आयात और निर्यात) पर कोलाहल का उपयोग कर कोड के लिए काम करता है।
प्रत्येक
IdentifierName
n
ExportClause
कीReferencedBindings
में के लिए:: यह एक विन्यास त्रुटि है अगर n के StringValue एक ReservedWord या यदि StringValue हैहालांकि, मुझे विश्वास है spec पूर्व
export { x as default }
प्रपत्र की अनुमति देता है नहीं कर रहा हूँ एन में से एक है: "उपकरण", "इंटरफ़ेस", "चलो", "पैकेज", "निजी", "संरक्षित", "सार्वजनिक", "स्थैतिक", या "उपज"।
ReservedWord
does include default
, हालांकि मुझे लगता है कि बहस कर सकते हैं कि ReferencedBindings
specifically to the module-local identifier names कि किया जा रहा है निर्यात (अर्थात foo
) और नहीं निर्यात नाम ही बात कर रहा है।
यह आमतौर पर आरक्षित शब्दों को निर्यात करने में सक्षम होने के लिए एक अजीब बात की तरह लगता है; export { foo as default }
ES2015 में एक डिफ़ॉल्ट निर्यात करने के लिए एक वैध तरीका है: कोलाहल खुशी से भी
// ./foo.js
export { foo as yield }
// ./mod.js
import { yield as nonReservedIdentifier } from './foo'
तो कुछ ऐसा, सारांश में की अनुमति देगा?
हालांकि, इस मामले में, 'डिफ़ॉल्ट' नामक निर्यात नाम 'डिफ़ॉल्ट' या वास्तविक 'डिफ़ॉल्ट' निर्यात है? –
मुझे लगता है कि [आयात spec] (http://www.ecma-international.org/ecma-262/6.0/#sec-static-semantics-importentriesformodule) सुझाव देता है कि यह दोनों है। –
हां, डिफ़ॉल्ट निर्यात सिर्फ 'डिफ़ॉल्ट' नाम से निर्यात किया गया बाध्यकारी है। यह दोनों कहने के लिए है, सिवाय इसके कि डिफ़ॉल्ट निर्यात को निर्यात/आयात करने के लिए विशेष वाक्यविन्यास है, और 'डिफ़ॉल्ट' अन्यथा एक अवैध स्थानीय पहचानकर्ता है। – Bergi