2012-11-06 22 views
9

मैं टाइपस्क्रिप्ट में बहुत सारे कोड को बदलने की प्रक्रिया में हूं, लेकिन & पर एक अच्छा संभाल प्राप्त करना चाहता था जहां मुझे कुछ चीजों का उपयोग करना चाहिए।टाइपस्क्रिप्ट में कक्षा बनाम मॉड्यूल का उपयोग कब करें?

अभी मैं मॉड्यूल में कुछ बड़े नामस्थान है:

(function (nameSpace) { 

    var privateVariables = ''; 

    function privateFunctions() { }   

    // Public methods 
    nameSpace.someMethodHere = function() { }; 

}(window.nameSpace = window.nameSpace || {})); 

मेरा प्रश्न टाइपप्रति में है, वहाँ में मुझे सिर्फ सिर्फ कक्षा में इन मोड़ कोई अंतर/लाभ है? या यह सिर्फ कक्षाओं (प्रत्येक विधि) के साथ एक बड़ा मॉड्यूल होना चाहिए?

module nameSpace { 

    export class someMethodHere { 
     // etc 
    } 

    // more classes (my methods) here ?? 
} 

-या-

class nameSpace { 

    someMethodHere() { 
     // code 
    } 
    // more prototyped methods here 
} 

या मैं उन्हें एक ही मॉड्यूल तरह से मैं वर्तमान में में की स्थापना की जानी चाहिए? मैं कोशिश कर रहा था और यह सिर्फ मुझे त्रुटियां दे रहा था, मुझे यकीन नहीं है कि मैं कक्षा के बिना मॉड्यूल के अंदर nameSpace.someMethodHere कैसे करता हूं!

उत्तर

8

यह निर्भर करता है। एक मॉड्यूल अलग-अलग वर्गों के झुकाव संग्रह के बजाय "चीजों" का एक अलग सेट होना चाहिए, इसलिए अगर चीजें एक जैसी हैं, तो उन्हें समूहित करने के लिए मॉड्यूल का उपयोग करें।

मेरा मानना ​​है कि टाइपस्क्रिप्ट टीम यह देखने का इंतजार कर रही है कि लोग मार्गदर्शन प्रकाशित करने से पहले भाषा का उपयोग कैसे करते हैं, लेकिन मुझे लगता है कि लोग एक मॉड्यूल प्रकाशित करेंगे जहां वे वर्तमान में एक स्क्रिप्ट प्रकाशित करेंगे - इसलिए jQuery एक मॉड्यूल होगा, प्रत्येक jQuery प्लगइन होगा एक मॉड्यूल, एक परीक्षण ढांचा एक मॉड्यूल होगा, और एक एओपी ढांचा एक मॉड्यूल होगा - उदाहरण के लिए।

+0

सहमत हैं, ठीक है वे सभी जुड़े हुए हैं। मुझे लगता है कि अब मैं इसके बारे में सोचता हूं, मैं सोच रहा हूं ... क्या कक्षा के भीतर सबकुछ रखने के लिए और अधिक समझदारी होती है (सभी विधियों को प्रोटोटाइप किया जा रहा है), या मॉड्यूल? मुझे लगता है कि मॉड्यूल को कम से कम –

+18

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

+0

मैं उस पर @RyanCavanaugh से 100% सहमत हूं। – Fenton

6
  • Singleton (हर जगह एक स्थिर वस्तु सुलभ) के लिए एक अच्छा विकल्प के रूप में एक मॉड्यूल का उपयोग करने पर विचार करें जहां पुस्तकालयों के लिए एक आम उपयोग है।
  • किसी कक्षा का उपयोग करने पर विचार करें जब आपको इस कक्षा के कई उदाहरण बनाने की आवश्यकता है या यदि आप इस कक्षा को विस्तारित करने की योजना बना रहे हैं।

असल में मॉड्यूल आपके सभी कोड को एक सुविधाजनक वैश्विक वस्तु में पैक करने के लिए अच्छे हैं जबकि कक्षा आपके कोड और डेटा प्रतिनिधित्व को व्यवस्थित करने के लिए स्मार्ट हैं।

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