एक नामकरण टकराव तब होता है जब दो या दो से अधिक कोड घटक चर, फ़ंक्शन या वर्ग के लिए समान नाम का उपयोग करते हैं। वे बड़ी परियोजनाओं में आम हैं जहां बहुत से लोग एक ही कोडबेस पर काम करते हैं। वे यह निर्धारित करना कठिन बना सकते हैं कि बग के लिए कौन सा कोड घटक जिम्मेदार है।
नाम स्थान का उपयोग करके, आप अपने कोड को व्यवस्थित और प्रबंधित कर सकते हैं ताकि संबंधित घटकों के समूह एक सामान्य पहचानकर्ता के अंतर्गत हों। यह नामकरण संघर्षों के जोखिम को कम करेगा।
एक नामस्थान बनाना
आप टाइपस्क्रिप्ट का उपयोग करके नामस्थान बना सकते हैं नाम स्थान कीवर्ड। नेमस्पेस और घुंघराले ब्रेसिज़ से घिरे ब्लॉक को नाम देने के लिए पहचानकर्ता के साथ इसका पालन करें। सिंटैक्स आपके द्वारा उपयोग किए जाने वाले के समान है जावास्क्रिप्ट में एक वर्ग बनाएँ.
उदाहरण के लिए:
नाम स्थान उदाहरण {}
फिर आप नेमस्पेस ब्लॉक के भीतर नेमस्पेस-वैरिएबल, फ़ंक्शंस और क्लासेस के सदस्यों की घोषणा कर सकते हैं:
नाम स्थान उदाहरण {
निर्यातसमारोहफू(): खालीपन{
सांत्वना देना।लकड़ी का लट्ठा("यह उदाहरण नामस्थान के अंदर एक कार्य है");
}निर्यातकक्षा छड़ {
संपत्ति: डोरी;निर्माता(संपत्ति: डोरी) {
यहसंपत्ति = संपत्ति;
}
}
निर्यातकॉन्स्ट बाज = "यह एक नामस्थान चर है"
}
उपरोक्त उदाहरण में, फू, छड़, और बाा के सदस्य हैं उदाहरण नाम स्थान। डिफ़ॉल्ट रूप से, आप केवल उसी नामस्थान के अंदर नामस्थान के सदस्यों तक पहुंच सकते हैं। उपयोग निर्यात कीवर्ड नामस्थान के प्रत्येक सदस्य को इसके बाहर पहुंच योग्य बनाने के लिए।
आप डॉट नोटेशन का उपयोग करके नामस्थान के सदस्य नाम को कॉल करके नामस्थान के सभी सार्वजनिक रूप से उपलब्ध सदस्यों तक पहुंच सकते हैं:
उदाहरण.फू (); // यह उदाहरण नामस्थान के अंदर एक फ़ंक्शन है
कॉन्स्ट बार = नया उदाहरण। छड़("डोरी");
सांत्वना देना.लॉग (बार.प्रॉपर्टी); // डोरी
सांत्वना देना.लॉग (उदाहरण.बाज़); // यह एक नेमस्पेस वैरिएबल है
नेस्टिंग नेमस्पेस
टाइपस्क्रिप्ट आपको अपने कोड के लिए एक पदानुक्रमित संरचना बनाने के लिए अन्य नामस्थानों के भीतर नेमस्पेस को नेस्ट करने की अनुमति देता है। नेस्टिंग नेमस्पेस एक सामान्य पहचानकर्ता के तहत संबंधित नेमस्पेस को समूहीकृत करके टकराव के नामकरण के जोखिम को और कम कर सकते हैं।
उदाहरण के लिए:
नाम स्थान उदाहरण {
निर्यातकॉन्स्ट संपत्ति_1 = "फू";निर्यातनाम स्थान छड़ {
निर्यातकॉन्स्ट प्रिंटफू = समारोह () {
सांत्वना देनालॉग (संपत्ति_1);
};
}निर्यातनाम स्थान बाज {
निर्यातकक्षा फू {
संपत्ति: डोरी;
निर्माता(संपत्ति: डोरी) {
यहसंपत्ति = संपत्ति;
}
}
}
}
उपरोक्त कोड ब्लॉक नेस्टेड नेमस्पेस का एक उदाहरण प्रदान करता है। उदाहरण नेमस्पेस शीर्ष-स्तरीय नेमस्पेस है, जिसमें छड़ नामस्थान और बाा नाम स्थान।
आप डॉट नोटेशन का उपयोग करके नेस्टेड नेमस्पेस में गुणों तक पहुंच सकते हैं जो आपके द्वारा बनाई गई पदानुक्रमित संरचना का अनुसरण करता है।
उदाहरण के लिए:
सांत्वना देना.लॉग (उदाहरण.property_1); // फू
उदाहरण। बार.प्रिंटफू () // फू
कॉन्स्ट फू = नया उदाहरण। बाज। फू("उदाहरण")
यह उदाहरण कोड नेमस्पेस के प्रत्येक सदस्य को पैरेंट नेमस्पेस के माध्यम से एक्सेस करता है। मूल नाम स्थान के बजाय सीधे किसी संपत्ति तक पहुँचने से त्रुटि होगी:
उदाहरण.प्रिंटफू ()
// त्रुटि TS2339: संपत्ति 'प्रिंटफू' टाइप 'टाइपोफ उदाहरण' पर मौजूद नहीं है
हालांकि नेस्टिंग नेमस्पेस आपको अपने कोड को व्यवस्थित करने में मदद कर सकते हैं, लेकिन डीप नेस्टेड नेमस्पेस विपरीत प्रभाव उत्पन्न कर सकते हैं। गहरे नेस्टेड नेमस्पेस आपके कोड को पढ़ने और बनाए रखने के लिए कठिन बनाते हैं।
नामस्थान उपनाम
नेमस्पेस एलियास नामस्थान सदस्य को दिया गया एक छोटा नाम है, जो इसे संदर्भित करना आसान बनाता है।
आप का उपयोग कर एक नामस्थान उपनाम बना सकते हैं आयात कीवर्ड नाम के बाद आप उपनाम को असाइन करना चाहते हैं। फिर असाइन करें आयात नामस्थान सदस्य के लिए कीवर्ड और अन्य नाम।
उदाहरण के लिए:
नाम स्थान कार {
निर्यातनाम स्थान टेस्ला {
निर्यातकक्षा मॉडलएक्स {
बनाएं(): डोरी {
वापस करना`मॉडल एक्स बनाया गया`
}
}
}निर्यातनाम स्थान टोयोटा {
निर्यातकक्षा केमरी {}
}निर्यातनाम स्थान फोर्ड {
निर्यातकक्षा मस्टैंग {}
}
}// उपनाम बनाना
आयात टेस्ला = कार। टेस्ला
कॉन्स्ट मॉडलएक्स = नया टेस्ला। मॉडलएक्स ()
मॉडलएक्स.क्रिएट () // मॉडल एक्स बनाया गया
यह उदाहरण के लिए एक उपनाम बनाता है कार। टेस्ला नाम स्थान। आप इस उपनाम का उपयोग के गुणों तक पहुँचने के लिए कर सकते हैं टेस्ला मॉडलएक्स क्लास की तरह नेमस्पेस, अधिक आसानी से।
एकाधिक फाइलों में नेमस्पेस का उपयोग करना
किसी भिन्न फ़ाइल में नामस्थान का उपयोग करने के लिए, आपको इसे आयात करना होगा। नाम स्थान आयात करना चर, कार्य, वर्ग आदि आयात करने से अलग है। आपके प्रोजेक्ट के आधार पर मॉड्यूल सिस्टम, आप या तो का उपयोग कर उन्हें आयात कर सकते हैं ज़रूरत होना या आयात कीवर्ड।
हालाँकि, आप केवल ट्रिपल-स्लैश निर्देश का उपयोग करके नामस्थान आयात कर सकते हैं, जो एक एकल-पंक्ति टिप्पणी है जिसमें XML टैग होता है।
उदाहरण के लिए:
// main.ts
///
उदाहरण.फू ()
यह उदाहरण a के अंदर ट्रिपल स्लैश निर्देश का उपयोग करता है main.ts फ़ाइल। निर्देश का संदर्भ देता है index.ts फ़ाइल, जिसमें शामिल है उदाहरण नाम स्थान। आयात किए बिना, नामस्थान केवल उसी फ़ाइल के भीतर उपलब्ध होता है जो इसे परिभाषित करता है।
संदर्भित करने के बाद index.ts फ़ाइल, आप तक पहुँच सकते हैं उदाहरण नेमस्पेस और इसके सार्वजनिक रूप से उपलब्ध सदस्य। उदाहरण के लिए, आप कॉल कर सकते हैं फू विधि पर उदाहरण नाम स्थान।
एक बार जब आप कई फाइलों का उपयोग कर लेते हैं, तो आपको यह सुनिश्चित करना होगा कि टाइपस्क्रिप्ट सभी आवश्यक कोड संकलित और लोड करता है। आप टाइपस्क्रिप्ट कंपाइलर से आउटपुट का उपयोग करके ऐसा कर सकते हैं आउटफाइल विकल्प। यह तब सभी इनपुट फ़ाइलों को एक एकल जावास्क्रिप्ट आउटपुट फ़ाइल में संकलित करेगा। कंपाइलर को इस तरह चलाने के लिए सामान्य सिंटैक्स है:
tsc --outFile
बदलना आपकी लक्षित जावास्क्रिप्ट फ़ाइल के नाम के साथ। बदलना ट्रिपल-स्लैश निर्देश वाली टाइपस्क्रिप्ट फ़ाइल के नाम के साथ।
उदाहरण के लिए:
tsc --outFile index.js main.ts
यह आदेश सामग्री को संकलित करेगा main.ts फ़ाइल, ट्रिपल-स्लैश निर्देश द्वारा संदर्भित सभी फ़ाइलों के साथ, index.js फ़ाइल।
वैकल्पिक रूप से, आप प्रत्येक फ़ाइल को अलग-अलग निर्दिष्ट कर सकते हैं:
tsc --outFile
यह ध्यान रखना महत्वपूर्ण है कि ट्रिपल-स्लैश निर्देश केवल तभी मान्य होता है जब फ़ाइल के शीर्ष पर घोषित किया जाता है। यदि आप इसे कहीं और उपयोग करने का प्रयास करते हैं, तो टाइपस्क्रिप्ट इसे बिना किसी विशेष अर्थ के नियमित एकल-पंक्ति टिप्पणी के रूप में मानेगा।
क्या आपको नेमस्पेस या मॉड्यूल का उपयोग करना चाहिए?
जबकि नामस्थानों को बहिष्कृत नहीं किया जाता है, ES6 मॉड्यूल का उपयोग करके अपने कोड को व्यवस्थित और प्रबंधित करने की अक्सर अनुशंसा की जाती है। मॉड्यूल को बनाए रखना और प्रबंधित करना आसान है और आप उन्हें कई फाइलों में फैला सकते हैं।
इसके अतिरिक्त, आप फ़ाइल स्तर पर आयात और निर्यात के संदर्भ में मॉड्यूल के बीच संबंध निर्दिष्ट कर सकते हैं। नामस्थान उनकी निर्भरताओं को परिभाषित नहीं कर सकते हैं।
अंततः, नामस्थान और मॉड्यूल के बीच का चुनाव आपके प्रोजेक्ट की विशिष्ट आवश्यकताओं और आवश्यकताओं पर निर्भर करेगा, क्योंकि दोनों टाइपस्क्रिप्ट में कोड को व्यवस्थित और प्रबंधित करने का एक मूल्यवान तरीका प्रदान करते हैं।