टाइपप्रति मॉड्यूल में वस्तु का विस्तार

वोट
3

मुझे क्या करना चाहते हैं कि वास्तव में इसी तरह की है यह और इस को छोड़कर मैं यह पता लगाने की कैसे एक मॉड्यूल के अंदर एक ArrayExtension डाल करने के लिए कोशिश कर रहा हूँ।

मैं जिस तरह से सी # विस्तार तरीकों काम करने के लिए कुछ इसी तरह, कि जिस तरह से मैं सिर्फ मॉड्यूल आयात कर सकते हैं पाने के लिए कोशिश कर रहा हूँ और मैं अपने अतिरिक्त तरीकों होगा। लिंक मैं प्रदान की कैसे किसी मौजूदा ऑब्जेक्ट का विस्तार करने के दिखाने के लिए, लेकिन मैं यह पता लगाने की संपुटित करने के लिए कैसे है कि एक मॉड्यूल में नहीं कर पाए हैं।

11/10/2012 को 01:52
का स्रोत उपयोगकर्ता
अन्य भाषाओं में...                            


2 जवाब

वोट
1

आप Node.js तरह गैर-ब्राउज़र वातावरण लक्षित कर रहे हैं यह संभव हो क्योंकि आप इस तरह के रूप में अपने मॉड्यूल के वैश्विक सदस्यों के लिए संदर्भ, पारित करने के लिए सक्षम हो जाएगा होगा Arrayअन्य मॉड्यूल के लिए,। उन अन्य मॉड्यूल तो वस्तु और / या जो केवल बुला मॉड्यूल द्वारा एक्सेस किया जा सकेगा अतिरिक्त कार्यक्षमता के साथ अपने प्रोटोटाइप में पारित विस्तार कर सकते हैं। अन्य मॉड्यूल आदेश इन एक्सटेंशन प्राप्त करने के लिए भी ऐसा ही करने के लिए होता है; इसलिए, संघर्ष को कम से कम के बाद से आयात स्पष्ट कर रहे हैं।

हालांकि, ब्राउज़र के वातावरण में इस मामले के बाद से नहीं केवल एक ही है windowवस्तु और उसके सदस्यों में कोई परिवर्तन हर जगह उपलब्ध हैं। जैसे ही अपने मॉड्यूल के किसी भी बढ़ाया Arrayउन एक्सटेंशन अन्य सभी मॉड्यूल के लिए उपलब्ध होगा - संघर्ष के लिए संभावना बढ़ रही है और के बारे में कारण के लिए कोड कठिन बना रही है।

इसके साथ ही कहा, वहाँ जे एस में पैटर्न, और इसलिए टाइपप्रति है, जो पूरा करना चाहिए कि आप क्या चाहते हैं। ऐसा ही एक पैटर्न 'Mixin' पैटर्न आप एक वस्तु पर अतिरिक्त कार्यक्षमता पर जोड़ने की अनुमति देता है जो उदाहरण के आधार पर। आप mixin मॉड्यूल जो तब कंस्ट्रक्टर्स में जब जरूरत एक वस्तु पर लागू किया जा सकता है, या यहाँ तक कि स्वचालित रूप से में फिर से प्रयोग करने योग्य कोड को अलग कर सकते हैं। एक सभ्य सिंहावलोकन और कार्यान्वयन उदाहरण के लिए इस पर एक नज़र डालें: http://javascriptweblog.wordpress.com/2011/05/31/a-fresh-look-at-javascript-mixins/

01/11/2012 को 05:48
का स्रोत उपयोगकर्ता

वोट
0

आप सरणी प्रकार में बनाया विस्तार करने के लिए कोशिश कर रहे हैं, तो आप ऐसा नहीं कर सकते एक मॉड्यूल के भीतर। आप विस्तार एक ArrayEx.ts फ़ाइल में रहते हैं और किसी भी मॉड्यूल के बाहर घटित करने की आवश्यकता होगी रहे हैं। उस के लिए कारण यह है कि यदि आप इसे एक मॉड्यूल के भीतर किया आप विस्तार होगी है Foo.Arrayप्रकार है जो के समान नहीं है Array

लेकिन तुम ने कहा कि तुम सिर्फ सक्षम आयात करने के लिए मॉड्यूल अपने अतिरिक्त तरीकों दिखाई होना चाहता हूँ और तुम सब वास्तव में क्या करने की जरूरत एक जोड़ है /// <reference path='ArrayEx.ts' />, जिसमें आप एक्सटेंशन तरीकों को उपलब्ध करना चाहते हैं किसी भी फाइल करने के लिए। यह अनिवार्य रूप से एक ही बात है।

11/10/2012 को 07:07
का स्रोत उपयोगकर्ता

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more