2012-10-05 13 views

उत्तर

55

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

module A.B.C { 
    export var x = 1; 
} 

यह

module A { 
    module B { 
     module C { 
      export var x = 1; 
     } 
    } 
} 

के बराबर है क्या भी महत्वपूर्ण है कि आप में ठीक उसी मॉड्यूल का नाम पुनः प्रयोग करते हैं एक टाइपस्क्रिप्ट प्रोग्राम, कोड एक ही मॉड्यूल से संबंधित होगा। इसलिए, आप पदानुक्रमित नामस्थानों को लागू करने के लिए नेस्टेड मॉड्यूल का उपयोग कर सकते हैं।

///<reference path='AnotherNamespace/ClassOne.ts'/> 
///<reference path='AnotherNamespace/ClassTwo.ts'/> 

module MyNamespace 
{ 
    import ClassOne = AnotherNamespace.ClassOne; 
    import ClassTwo = AnotherNamespace.ClassTwo; 

    export class Main 
    { 
     private _classOne:ClassOne; 
     private _classTwo:ClassTwo; 

     constructor() 
     { 
      this._classOne = new ClassOne(); 
      this._classTwo = new ClassTwo(); 
     } 
    } 
} 

आप और अधिक यहाँ देख सकते हैं::

+0

ध्यान दें कि इन मॉड्यूल को अब नामस्थान के रूप में जाना जाता है: https://github.com/Microsoft/TypeScript/issues/2159 – Alex

+0

मैं 'नेमस्पेस' की अनुशंसा नहीं करता और न ही इसे 'मॉड्यूल' स्रोत कोड' के साथ मिश्रित करता हूं। – fletchsod

7

कोई 'नेमस्पेस' कीवर्ड नहीं है, लेकिन आंतरिक मॉड्यूल ('मॉड्यूल' कीवर्ड का उपयोग करके) और बाहरी मॉड्यूल ('निर्यात' कीवर्ड का उपयोग करके) आपके कोड को तार्किक पदानुक्रमों में विभाजित करने का एक समान तरीका प्रदान करता है।

module outer { 
    var local = 1; 
    export var a = local; 
    export module inner { 
     export var x = 10; 
    } 
} 

आप देख सकते हैं, मॉड्यूल नाम है और नेस्ट जा सकता है:

+5

टाइपस्क्रिप्ट 1.5 के बाद से ऐसा कीवर्ड –

+0

है, मैं 'नेमस्पेस 'की अनुशंसा नहीं करता और न ही इसे' मॉड्यूल 'स्रोत कोड के साथ मिश्रित करता हूं। – fletchsod

3

झूठी ...

module A.B.C { 
    export var x = 1; 
} 

module A { 
    export module B { 
     export module C { 
      export var x = 1; 
     } 
    } 
} 
के बराबर है

क्योंकि आप मॉड्यूल एक बाहर लिख सकते हैं:

var y = A.B.C.x; 

लेकिन:

module A { 
    module B { 
     module C { 
      export var x = 1; 
     } 
     var y = C.x; // OK 
    } 
    //var y = B.C.x; // Invalid 
} 
//var y = A.B.C.x; // Invalid 
28

संस्करण 1.5 के रूप में, टाइपप्रति namespace कीवर्ड का समर्थन करता है। नेमस्पेस आंतरिक मॉड्यूल के बराबर हैं।

What's new in Typescript से

:

से पहले:

module Math { 
    export function add(x, y) { ... } 
} 

के बाद:

namespace Math { 
    export function add(x, y) { ... } 
} 

एक आंतरिक मॉड्यूल को परिभाषित करने के लिए, अब आप module और namespace दोनों का उपयोग कर सकते हैं।

+1

दोनों 'मॉड्यूल' और' नेमस्पेस 'एक ही जावास्क्रिप्ट कोड में पारदर्शी हैं। –

+0

मैं 'नेमस्पेस 'की सिफारिश नहीं करता और न ही इसे' मॉड्यूल 'स्रोत कोड के साथ मिलाकर। – fletchsod

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