2012-10-03 16 views
14

ऐसा लगता है कि टाइपस्क्रिप्ट में एक अच्छा मॉड्यूल सिस्टम है, हालांकि क्या यह आवश्यकता के लिए कुछ की आवश्यकता को प्रतिस्थापित करता है? दूसरे शब्दों में, जब आप एक टाइपस्क्रिप्ट पैकेज "संकलित" करते हैं, तो यह आपके लिए सभी निर्भरता संकल्प को संभालता है? उदाहरण की सराहना की जाएगी!टाइपस्क्रिप्ट पैकेज प्रबंधन

उत्तर

16

टाइपस्क्रिप्ट में रनटाइम मॉड्यूल लोडर नहीं है। रनटाइम पर उपयोग करने के लिए आपको अभी भी एक मॉड्यूल लोडर प्रदान करना होगा, उदा। जेएस की आवश्यकता है टाइपस्क्रिप्ट या तो सामान्य जेएस (नोड.जेएस स्क्रिप्ट्स के लिए) और एएमडी लोडर (उदा। जरूरी जेएस) के साथ जावास्क्रिप्ट कोड को संगत करने का समर्थन करता है। यह निर्दिष्ट करने के लिए कि "- मॉड्यूल" में पास का उपयोग करने के लिए "एमडी" या "कॉमन" के साथ कंपाइलर पर स्विच करें।

का तरीका यहां बताया टाइपप्रति में एक मॉड्यूल का निर्यात है:

export module depModule { 
    export class A { 
    } 
} 

और यहाँ --module AMD स्विच के साथ उत्पन्न जावास्क्रिप्ट कोड है:

define(["require", "exports"], function(require, exports) { 
    (function (depModule) { 
     var A = (function() { 
      function A() { } 
      return A; 
     })(); 
     depModule.A = A; 
    })(exports.depModule || (exports.depModule = {})); 
}) 
3

टाइपप्रति कोड है कि के साथ काम करेंगे फेंकना कर सकते हैं एएमडी-संगत निर्भरता लोडर दोनों जैसे आवश्यकताएं या नोड जैसे सामान्य वातावरण। आप संकलक के लिए मॉड्यूल विकल्प के साथ इसे नियंत्रित कर सकते हैं। संकलक स्वयं रनटाइम पर निर्भरता संकल्प को संभाल नहीं करता है, यह आपके लिए काम करने के लिए निर्भर है, लेकिन यह संकलन समय पर निर्भरताओं को हल करने का प्रयास करता है ताकि यह आपको प्रकार की जानकारी दे सके।

उदाहरण के लिए आप कोडप्लेक्स, this one पर परीक्षण निर्देशिका में मॉड्यूल का उपयोग करने वाली परियोजनाओं के उदाहरण देख सकते हैं। इन परीक्षण परियोजनाओं को संकलित करने का उत्पादन .js फ़ाइलें हैं जो या तो लोड करने योग्य होंगी, उदाहरण के लिए, requjs (यदि आप पास करते हैं - मॉड्यूल एएमडी) या नोड (यदि आप पास करते हैं - मॉड्यूल कॉमनज)।

2

यदि आपका एप्लिकेशन केवल टाइपस्क्रिप्ट मॉड्यूल/फाइलों द्वारा रचित होगा, तो मॉड्यूल लोडर या अन्य निर्भरता प्रबंधन का उपयोग करना संभव नहीं है। आपको टिप्पणी संदर्भों के साथ सभी निर्भरताओं को शामिल करने और संकलक के --out विकल्प का उपयोग करने की आवश्यकता होगी। उदाहरण के लिए:

tsc --out compiled.js app.ts 

इस में डाल देंगे app.ts और निर्भरता की निर्भरता भी शामिल अपने सभी निर्भरता, के लिए उत्पन्न js compiled.js। परिणामस्वरूप फ़ाइल को सीधे स्क्रिप्ट टैग के साथ HTML फ़ाइल में शामिल किया जा सकता है। इसे भी छोटा किया जा सकता है। रनटाइम पर मॉड्यूल लोडिंग समर्थित नहीं है

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