टाइपस्क्रिप्ट का प्रगणित प्रकार स्पष्ट अर्थ के साथ संबंधित मूल्यों की पैकेजिंग का एक आसान तरीका है।
एक एनम, या एक गणना प्रकार, एक डेटा संरचना है जो आपको नामित मानों के एक सेट को परिभाषित करने की अनुमति देती है।
एनम मानों के एक निश्चित सेट को स्थिरांक के रूप में दर्शाने का एक तरीका प्रदान करते हैं। वे विशिष्ट मानों को सार्थक नाम देकर आपके कोड को अधिक अभिव्यंजक और स्व-दस्तावेजीकरण बनाने में मदद कर सकते हैं। यहां आप सीखेंगे कि आप टाइपस्क्रिप्ट में एनम का उपयोग कैसे कर सकते हैं।
एक एनम बनाना
एनम आम तौर पर किसी दिए गए मान के लिए विकल्पों की एक निश्चित संख्या का प्रतिनिधित्व करते हैं। उदाहरण के लिए, प्राथमिक रंगों का प्रतिनिधित्व करने वाले एनम में लाल, पीले और नीले रंग के लिए निश्चित मान हो सकते हैं।
एनम डेटा को कुंजी/मूल्य जोड़े के एक सेट के रूप में दर्शाते हैं जिन्हें एनम सदस्यों के रूप में जाना जाता है। कुंजी हमेशा एक स्ट्रिंग होनी चाहिए. हालाँकि, मान-डिफ़ॉल्ट रूप से एक स्वचालित-वृद्धिशील संख्या-संख्यात्मक, एक स्ट्रिंग या गणना की जा सकती है।
आप इसमें एक एनम बना सकते हैं टाइपस्क्रिप्ट भाषा का उपयोग
enum कीवर्ड. एनम के नाम और घुंघराले ब्रेसिज़ की एक जोड़ी के साथ इसका पालन करें ({}) जिसमें एनम सदस्य शामिल हैं। एक सामान्य जावास्क्रिप्ट नामकरण परंपरा कहा गया है कि एनम नाम बड़े अक्षर से शुरू होने चाहिए।enum दिशा {
ऊपर,
नीचे,
बाएं,
सही
}
इस उदाहरण में एक एनम की सुविधा है जिसे कहा जाता है दिशा. एनम में प्रत्येक दिशा का प्रतिनिधित्व करने वाला एक सदस्य होता है: ऊपर, नीचे, बाएँ और दाएँ।
चूँकि यह कोड प्रत्येक कुंजी के लिए कोई मान निर्दिष्ट नहीं करता है, टाइपस्क्रिप्ट स्वचालित रूप से मान निर्दिष्ट करेगा। पहले सदस्य, अप, का मान 0 होगा। शेष सदस्यों में से प्रत्येक का मान पिछले सदस्य से 1 अधिक होगा। यदि आपको याद रखना कठिन हो तो आप इसे स्पष्ट रूप से घोषित कर सकते हैं:
enum दिशा {
ऊपर= 0,
नीचे = 1,
वाम = 2,
सही = 3,
}
या आप अलग-अलग मानों को स्पष्ट रूप से घोषित कर सकते हैं, अघोषित मानों को छोड़कर पहले की तरह वृद्धि जारी रख सकते हैं:
enum दर्जा {
सक्रिय= 9,
निष्क्रिय, // 10
}
इस उदाहरण में, निष्क्रिय सदस्य का मान 10 है। यह व्यवहार उन एनमों पर लागू होता है जिनमें केवल संख्यात्मक मान होते हैं, स्ट्रिंग या विषम सदस्यों वाले एनम पर नहीं।
एनम के विभिन्न प्रकार
टाइपस्क्रिप्ट में एनम का एक अंतर्निहित प्रकार होता है, जिसका आधार उनके सदस्यों द्वारा रखे गए मानों का प्रकार होता है। सबसे आम प्रकार संख्यात्मक एनम है, जिसका व्यवहार पिछले अनुभाग में शामिल है, लेकिन दो भिन्नताएं हैं।
स्ट्रिंग एनम्स
एक स्ट्रिंग एनम एक एनम है जिसमें इसके सभी सदस्य स्ट्रिंग हैं। संख्यात्मक गणनाओं के विपरीत, जहां मान स्वचालित रूप से निर्दिष्ट होते हैं, आपको प्रत्येक सदस्य को एक स्ट्रिंग के साथ प्रारंभ करना होगा:
enum प्राथमिक रंग {
लाल = "लाल",
पीला= "पीला",
नीला = "नीला"
}
हालाँकि स्ट्रिंग एनम में ऑटो-इंक्रीमेंटिंग गुण नहीं होते हैं, लेकिन यदि आप उन्हें क्रमबद्ध करते हैं तो वे अधिक समझ में आ सकते हैं। उनके मान अभी भी सदस्य नामों के बिना वर्णनात्मक होने चाहिए, जबकि संख्यात्मक मानों का एक सेट स्व-वर्णनात्मक नहीं हो सकता है।
विषमकोण Enums
हेटेरोजेनस एनम वे एनम हैं जिनमें संख्यात्मक और स्ट्रिंग दोनों सदस्य होते हैं। उदाहरण के लिए:
enum परिणाम {
सफलता= "सफलता",
असफलता = 0
}
विषम एनम तब उपयोगी होते हैं जब आपके पास ऐसे एनम सदस्य होते हैं जिन्हें प्रत्येक सदस्य के विशिष्ट संदर्भ या अर्थ के आधार पर अलग-अलग मूल्य प्रकारों की आवश्यकता होती है। हालांकि टाइपस्क्रिप्ट दस्तावेज़ीकरण विषम एनम के उपयोग को हतोत्साहित करता है क्योंकि वे जटिलता उत्पन्न करते हैं जो आपके कोड को अधिक त्रुटि-प्रवण बना सकते हैं।
परिकलित और निरंतर गणना सदस्य
प्रत्येक एनम सदस्य का एक मान होता है, जो या तो स्थिर हो सकता है या गणना की जा सकती है।
लगातार Enum सदस्य
एक एनम सदस्य स्थिर है यदि वह नीचे दी गई किसी भी शर्त को पूरा करता है।
- यह एनम का पहला सदस्य है और इसमें कोई इनिशियलाइज़र नहीं है।
- इसमें इनिशियलाइज़र नहीं है, और पूर्ववर्ती एनम सदस्य एक संख्यात्मक स्थिरांक था।
- इसे निरंतर एनम अभिव्यक्ति के साथ प्रारंभ किया गया है।
टाइपस्क्रिप्ट दस्तावेज़ीकरण के अनुसार, एक स्थिर एनम अभिव्यक्ति टाइपस्क्रिप्ट अभिव्यक्तियों का एक सबसेट है जिसका संकलन समय पर पूरी तरह से मूल्यांकन किया जा सकता है। उदाहरण के लिए, एक स्ट्रिंग या एक संख्यात्मक शाब्दिक।
उदाहरण के लिए, नीचे दिए गए कोड ब्लॉक में एनम के सभी सदस्य स्थिर हैं:
// मामला एक
enum दिशा {
ऊपर,
नीचे,
बाएं,
सही
}// केस 2
enum सप्ताह का दिन {
सोमवार= 1,
मंगलवार,
बुधवार,
गुरुवार,
शुक्रवार
}
// केस 3
enum मौसम {
बसंत = "वसंत",
ग्रीष्म = "गर्मी",
पतझड़ = "पतझड़",
सर्दी= "सर्दी"
}
जब आप निरंतर एनम सदस्यों को सादे जावास्क्रिप्ट में ट्रांसपाइल करते हैं, तो जेनरेट किया गया कोड उनके शाब्दिक मूल्यों का उपयोग करता है। यह प्रदर्शन के लिए फायदेमंद हो सकता है और डिबगिंग को आसान बना सकता है।
उदाहरण के लिए, यहां सीज़न एनम का ट्रांसपिल्ड संस्करण है:
वर मौसम;
(समारोह (मौसम) {
मौसम["वसंत"] = "वसंत";
मौसम["गर्मी"] = "गर्मी";
मौसम["पतझड़"] = "पतझड़";
मौसम["सर्दी"] = "सर्दी";
})(सीज़न || (सीज़न = {}));
गणना किए गए एनम सदस्य
आप अभिव्यक्ति या अन्य गतिशील गणनाओं के आधार पर एनम सदस्यों को मान निर्दिष्ट करने के लिए गणना किए गए एनम सदस्यों का उपयोग कर सकते हैं। उदाहरण के लिए:
enum आकार {
छोटा = 1,
मध्यम = गणना आकार(12),
बड़ा = गणना आकार(5)
}समारोहगणनाआकार(कीमत: संख्या): संख्या{
वापस करना कीमत * 5;
}
सांत्वना देना.लॉग (आकार. बड़ा)
आकार एनम में तीन सदस्य हैं: छोटा, मध्यम, और बड़ा. यह स्पष्ट रूप से छोटे सदस्य को मान 1 निर्दिष्ट करता है। मध्यम और बड़ा सदस्य किसी फ़ंक्शन का उपयोग करते हैं गणनाआकार रनटाइम पर उनके मूल्यों की गणना करने के लिए।
गणना किए गए एनम सदस्यों के साथ काम करते समय, यह ध्यान रखना महत्वपूर्ण है कि मान रनटाइम तक ज्ञात नहीं हैं। यह अधिक जटिलता और क्षमता का परिचय दे सकता है रनटाइम त्रुटियाँ स्थिर मूल्यों वाले एनम सदस्यों की तुलना में।
उदाहरण के लिए:
वर आकार;
(समारोह (आकार) {
आकार[आकार["छोटा"] = 1] = "छोटा";
आकार[आकार["मध्यम"] = गणना आकार(12)] = "मध्यम";
आकार[आकार["बड़ा"] = गणना आकार(5)] = "बड़ा";
})(आकार || (आकार = {}));
सांत्वना देना।लकड़ी का लट्ठा(आकार।बड़ा)
उपरोक्त कोड ब्लॉक इसका ट्रांसपिल्ड संस्करण है आकार enum. ध्यान दें कि कैसे टाइपस्क्रिप्ट जावास्क्रिप्ट कोड में कैलकुलेटसाइज() से रिटर्न मान शामिल नहीं करता है। इसके बजाय, इसमें मूल फ़ंक्शन कॉल शामिल है ताकि जावास्क्रिप्ट रनटाइम पर मान निर्धारित कर सके।
एनम मानों तक पहुँचना
आप ऑब्जेक्ट डॉट नोटेशन का उपयोग करके एनम सदस्यों के मूल्यों तक पहुंच सकते हैं।
उदाहरण के लिए:
enum दिशा {
ऊपर= 0,
नीचे = 1,
वाम = 2,
सही = 3,
}
सांत्वना देना.लॉग (दिशा. बाएं) // 2
संख्यात्मक गणनाओं का रिवर्स मैपिंग
संख्यात्मक एनम में रिवर्स मैपिंग से तात्पर्य उसके मूल्य से संबंधित एनम सदस्य नाम लाने की क्षमता से है। संख्यात्मक मानों के साथ काम करते समय यह विशेष रूप से उपयोगी हो सकता है, जिसे आपको डिकोड करने की आवश्यकता हो सकती है।
डिफ़ॉल्ट रूप से, टाइपस्क्रिप्ट में एनम मान अग्रेषित-मैप किए जाते हैं, जिसका अर्थ है कि आप केवल नाम से जुड़े मान तक पहुंच सकते हैं। हालाँकि, आप एनम सदस्य को उसके मूल्य के आधार पर पुनः प्राप्त करने के लिए मैन्युअल रूप से रिवर्स मैपिंग कर सकते हैं।
उदाहरण के लिए:
enum दिशा {
ऊपर= 1,
नीचे,
बाएं,
सही
}समारोहgetDirectionName(दिशामूल्य: संख्या): डोरी{
// रिवर्स मैपिंग
कॉन्स्ट दिशानाम = दिशा[दिशा मान];
वापस करना दिशानाम;
}
सांत्वना देना.लॉग (getDirectionName(1)); // "ऊपर"
सांत्वना देना.लॉग (getDirectionName(3)); // "बाएं"
यह getDirectionName फ़ंक्शन एक इंडेक्स के रूप में इसके मान का उपयोग करके एनम सदस्य नाम तक पहुंच कर रिवर्स मैपिंग करता है। फ़ंक्शन एक लेता है दिशामूल्य एक तर्क के रूप में और संबंधित एनम सदस्य नाम का उपयोग करके पुनर्प्राप्त करता है दिशा[दिशामान].
रिवर्स मैपिंग उन परिदृश्यों में उपयोगी हो सकती है जहां आपके पास एक संख्यात्मक मान है और संबंधित एनम सदस्य नाम निर्धारित करने की आवश्यकता है। यह आगे और पीछे दोनों दिशाओं में एनम के साथ काम करने का एक सुविधाजनक तरीका प्रदान करता है।
Enums के कई अनुप्रयोग हैं
आप विभिन्न परिदृश्यों में एनम का उपयोग कर सकते हैं, जैसे स्विच स्टेटमेंट को संभालना, फ़ंक्शन पैरामीटर को परिभाषित करना, डेटा मैप करना और विकल्पों या सेटिंग्स का प्रतिनिधित्व करना।
चाहे आपको विकल्पों के एक सीमित सेट का प्रतिनिधित्व करने या जटिल राज्य परिवर्तनों को प्रबंधित करने की आवश्यकता हो, टाइपस्क्रिप्ट में एनम्स आपके कोड की स्पष्टता और संरचना को बढ़ाने के लिए एक मूल्यवान उपकरण हैं।