2013-03-07 13 views
32

हमारी प्रोजेक्ट में हम आवश्यकता मॉड्यूल को हमारे मॉड्यूल लोडर के रूप में उपयोग कर रहे हैं। हमारे मॉड्यूल में से कुछ वैश्विक पुस्तकालयों को प्रभावित करती है, और इसलिए सीधे मॉड्यूल वे में संदर्भित भीतर उपयोग नहीं किया जाएगाटाइपस्क्रिप्ट: संकलन अप्रतिबंधित आयात को हटाता है

उदाहरण:।

define(['definitely/goingto/usethis/','just/referencingthis/forpackaging'], function(useThis) { 
    useThis.likeIPromised(); 

    // the following call can only be made when the second required file is available 
    someGlobalAvailableVariable.someMethod(); 
}); 

जब जावास्क्रिप्ट में मेरी मॉड्यूल लेखन यह काम करता है के रूप में उम्मीद। हालांकि, हम चरण-दर-चरण टाइप करके हमारे प्रोजेक्ट चरण का अनुवाद कर रहे हैं। ऊपर के उदाहरण को देखते हुए, इस में जो परिणाम:

import useThis = module("definitely/goingto/usethis/"); 
import whatever = module("just/referencingthis/forpackaging"); 

useThis.likeIPromised(); 

// I've written a definition file so the following statement will evaluate 
someGlobalAvailableVariable.someMethod(); 

और जब जावास्क्रिप्ट को यह संकलन, संकलक उपयोगी होना चाहता है और किसी भी अप्रयुक्त आयात निकाल देता है। इस प्रकार, यह मेरा कोड तोड़ता है, क्योंकि दूसरा आयातित मॉड्यूल उपलब्ध नहीं है।

मेरे वर्तमान के आसपास काम एक अनावश्यक काम शामिल करने के लिए है, लेकिन यह बदसूरत दिखता है:

import whatever = module("just/referencingthis/forpackaging"); 
var a = whatever; // a is never ever used further down this module 

किसी को भी पता है अगर यह टाइपप्रति संकलक संकलन के दौरान मॉड्यूल अनुकूलन नहीं करने के लिए कॉन्फ़िगर करने के लिए संभव है?

/// <amd-dependency path="just/referencingthis/forpackaging" /> 
+0

मुझे लगता है कि आप आयात को उचित मॉड्यूल में नहीं ले जा सकते हैं? – Fenton

+2

वे उपयुक्त मॉड्यूल में हैं। मेरी परियोजना मुख्य रूप से विगेट्स से बाहर होती है। प्रत्येक विजेट अपने मॉड्यूल में पैक किया जाता है। मैं टेम्पलेटिंग के लिए हैंडलबार्स का उपयोग कर रहा हूं और परिणाम विजेट को अपनी विजेट परिभाषा फ़ाइलों के साथ पैक करना चाहता हूं। इस तरह के विचार को संदर्भित करते समय, यह वैश्विक चर 'हैंडलबार्स' पर एक ही नाम के साथ एक विधि का पर्दाफाश करेगा। इसलिए मुझे मॉड्यूल को संदर्भित करने की आवश्यकता नहीं है क्योंकि यह मेरे लिए विधि परिभाषित करेगा। – thomaux

उत्तर

7

एक अच्छे समाधान (टीएस 1.8 के साथ परीक्षण):

import 'just/referencingthis/forpackaging'; 

AMD-निर्भरता ट्रिपल

26

आप अपनी फ़ाइल (import के बजाय) के शीर्ष पर ऐसा कर सकते हैं स्लैश-निर्देश केवल तभी काम करता है जब अन्य आवश्यकता आयात हो; केवल एमडी-निर्भरता निर्देशों के परिणामस्वरूप मॉड्यूल परिभाषा के बिना जावास्क्रिप्ट को उत्पन्न करने वाले टाइपस्क्रिप्ट कंपाइलर में परिणाम होता है।

+0

वाह! इस सुविधा के बारे में नहीं पता था, धन्यवाद! – thomaux

+0

सहमत हैं, इच्छा है कि यह – JasonS

+0

दस्तावेज बहुत उपयोगी था, धन्यवाद। – Tarion

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