2012-11-17 22 views
7

Apparently, आप टाइपस्क्रिप्ट में 'निर्यात आयात xx = मॉड्यूल ("xx")' कह सकते हैं।टाइपस्क्रिप्ट - 'निर्यात आयात' क्या है?

लेकिन इसका क्या अर्थ है? मैं उस कल्पना में नहीं देखा था।

+3

यह प्रश्न सिंटैक्स से संबंधित है जो 4 साल पहले टाइपस्क्रिप्ट से हटा दिया गया था। –

उत्तर

9

अच्छा अवलोकन।

यह एक रचना तकनीक है जो संपूर्ण आयातित मॉड्यूल कार्य को संलग्न मॉड्यूल के भीतर बनाए गए बाहरी मॉड्यूल की तरह बनाता है। यहां एक संक्षिप्त उदाहरण दिया गया है:

module MyModule { 
    export class MyClass { 
     doSomething() { 

     } 
    } 
} 

declare module EnclosingModule { 
    export import x = module(MyModule); 
} 

var y = new EnclosingModule.x.MyClass(); 

निर्यात कीवर्ड अपने मॉड्यूल को बाहरी मॉड्यूल बनाता है। इस मामले में, यह MyModule को संलग्न मॉड्यूल का बाहरी मॉड्यूल बना रहा है, भले ही इसे मूल रूप से संलग्न मॉड्यूल के अंदर परिभाषित नहीं किया गया हो।

क्यों?

मुझे लगता है कि यह विभिन्न संदर्भों में दोहराने के बजाय मॉड्यूल का पुन: उपयोग करने का एक आसान तरीका है - जिससे उन्हें एक से अधिक स्थानों में सुलभ बना दिया जाता है जहां ऐसा करने के लिए तार्किक लगता है।

+0

उत्कृष्ट, धन्यवाद! –

+1

यह दिलचस्प है कि spec राज्यों की धारा 9.2.2 "आयात घोषणा में घोषित मॉड्यूल पहचानकर्ता को निर्यात करना संभव नहीं है।" जब तक कि मैं अपनी शब्दावली गलत नहीं पा रहा हूं, क्या हम ऊपर क्या कर रहे हैं? – Crwth

+1

यह इस तरह के बॉक्स से बाहर काम नहीं करता है - लेकिन आप इसे परिभाषाओं में उपयोग कर सकते हैं। यानी मॉड्यूल घोषित करें कुछ मॉड्यूल {निर्यात आयात सामग्री = मॉड्यूल ("सामान"); } ' – Fenton

4

0.8.1.1 के रूप में, आपको स्पष्ट रूप से इस वाक्यविन्यास का उपयोग करने की आवश्यकता है जब आप कक्षाओं का निर्यात कर रहे हैं जो अन्य मॉड्यूल में घोषित कक्षाओं का विस्तार करते हैं।

उदाहरण के लिए, 0.8.1 में, तो आप इस कह सकते हैं:

import mUiBase = module("../UiBase"); 

export class BaseViewModel extends mUiBase.UiBase { 
} 

लेकिन 0.8.1.1 में, यह है कि आप एक त्रुटि "निर्यात वर्ग निजी मॉड्यूल से वर्ग फैली" है, तो आप क्या करने की जरूरत देता है इसके बदले:

export import mUiBase = module("../UiBase"); 

export class BaseViewModel extends mUiBase.UiBase { 
} 

संभवतः इसका उद्देश्य है, न केवल एक बग।

+1

कोडप्लेक्स पर चर्चा से मेरी समझ (इस पल में लिंक नहीं मिल रहा है ...) यह है कि यह एक बग है, और निर्यात आयात एक अस्थायी कामकाज है। – JcFx

+0

मैं 0.8.1.1 का उपयोग कर रहा था ... बस 0.8.3 तक अपग्रेड किया गया और मेरे सभी "निर्यात आयात" अब त्रुटियां हैं (निर्यात को आसानी से हटा सकते हैं)। तो जेसीएफएक्स एक बग होने के बारे में सही था। अजीब बात है कि स्टीव ने इसके लिए एक वास्तविक उपयोग का वर्णन किया, अब इसके साथ क्या? – parliament

संबंधित मुद्दे