TypeScript Enum में मान की उपस्थिति की जाँच करना: पूर्ण गाइड

शुरुआती लोगों के लिए ऑनलाइन Python प्रशिक्षक

Python आसानी से सीखें बिना सिद्धांत के बोझ के। स्वचालित जांच के साथ व्यावहारिक कार्य हल करें और ब्राउज़र में सीधे कोड लिखें।

पाठ्यक्रम शुरू करें

TypeScript Enum में मान क्यों जाँचें? व्यवहार में एक वास्तविक उदाहरण

\n\n

कल्पना करें: आप TypeScript के साथ Node.js पर बैकएंड लिख रहे हैं। क्लाइंट ऑर्डर की स्थिति भेजता है — एक स्ट्रिंग "shipped"। आपके पास विकल्पों के साथ एक enum OrderStatus है: Pending, Processing, Shipped, Delivered। लेकिन अचानक "CANCELLED" या "unknown" आता है। क्या करें? सही — TypeScript enum में मान मौजूद है या नहीं, इसकी जाँच करें।

\n\n

यह कार्य Stack Overflow पर सबसे आम में से एक है (हज़ारों व्यूज़)। और यह कोई आश्चर्य की बात नहीं है: TypeScript में enum केवल स्थिरांकों का एक सेट नहीं है, बल्कि संख्यात्मक और स्ट्रिंग वेरिएंट वाला एक चालाक प्राणी है। इस गाइड में, हम enum में मान की उपस्थिति की जाँच करने के सभी तरीकों पर चर्चा करेंगे, सरल से लेकर उन्नत तक, कोड उदाहरणों और स्पष्टीकरणों के साथ।

\n\n

यदि आप अभी TypeScript सीखना शुरू कर रहे हैं या अपने ज्ञान को गहरा करना चाहते हैं — यह लेख आपके लिए है। चलिए शुरू करते हैं!

\n\n

TypeScript में Enum क्या है? संक्षिप्त परिचय

\n\n

Enum (गणना) नामित स्थिरांकों का एक सेट परिभाषित करने का एक तरीका है। TypeScript में दो प्रकार के enum होते हैं:

\n\n
    \n
  • संख्यात्मक enum — मान स्वचालित रूप से बढ़ते हैं (0, 1, 2...)।
  • \n
  • स्ट्रिंग enum — प्रत्येक सदस्य को स्पष्ट रूप से एक स्ट्रिंग सौंपी जाती है।
  • \n
\n\n

संख्यात्मक enum का उदाहरण:

\n\n
enum Direction {\n    Up,    // 0\n    Down,  // 1\n    Left,  // 2\n    Right  // 3\n}
\n\n

स्ट्रिंग enum का उदाहरण:

\n\n
enum Status {\n    Active = "ACTIVE",\n    Inactive = "INACTIVE",\n    Pending = "PENDING"\n}
\n\n

मान क्यों जाँचें? क्योंकि बाहरी स्रोतों (API, फॉर्म, डेटाबेस) से डेटा कुछ भी हो सकता है। जाँच के बिना, आपको undefined या रनटाइम त्रुटि मिलने का जोखिम है।

\n\n

तरीका 1. क्लासिक: Object.values() + includes()

\n\n

सबसे लोकप्रिय और पढ़ने योग्य तरीका — enum को मानों की एक सरणी में बदलना और includes() के साथ उपस्थिति की जाँच करना।

\n\n

स्ट्रिंग enum के लिए:

\n\n
enum Color {\n    Red = "RED",\n    Green = "GREEN",\n    Blue = "BLUE"\n}\n\nfunction isColor(value: string): boolean {\n    return Object.values(Color).includes(value as Color);\n}\n\nconsole.log(isColor("RED"));    // true\nconsole.log(isColor("YELLOW")); // false
\n\n

संख्यात्मक enum के लिए — एक तरकीब! Object.values() रिवर्स मैपिंग (कुंजियाँ और मान) लौटाता है। इसलिए केवल संख्याओं को फ़िल्टर करना होगा:

\n\n
enum NumberEnum {\n    A = 1,\n    B = 2,\n    C = 3\n}\n\nfunction isNumberEnumValue(value: number): boolean {\n    return Object.values(NumberEnum).filter(v => typeof v === 'number').includes(value);\n}\n\nconsole.log(isNumberEnumValue(2)); // true\nconsole.log(isNumberEnumValue(5)); // false
\n\n

यह दृष्टिकोण सार्वभौमिक है, लेकिन संख्यात्मक enum के साथ सावधानी की आवश्यकता है। लाभ: सरल और स्पष्ट। नुकसान: फ़िल्टरिंग के बारे में याद रखना होगा।

\n\n

तरीका 2. Type Guard: enum कुंजियों के माध्यम से जाँच

\n\n

यदि आपको केवल मान की जाँच नहीं करनी है, बल्कि टाइप गारंटी भी प्राप्त करनी है, तो type guard का उपयोग करें। यह विधि API के साथ काम करते समय विशेष रूप से उपयोगी है, जहाँ आप टाइप को संकीर्ण करना चाहते हैं।

\n\n
enum UserRole {\n    Admin = "admin",\n    User = "user",\n    Guest = "guest"\n}\n\nfunction isUserRole(value: string): value is UserRole {\n    return Object.values(UserRole).includes(value as UserRole);\n}\n\nfunction processRole(role: string) {\n    if (isUserRole(role)) {\n        // TypeScript जानता है कि role — UserRole है\n        console.log(`भूमिका: ${role}`);\n    } else {\n        console.log("अज्ञात भूमिका");\n    }\n}\n\nprocessRole("admin"); // भूमिका: admin\nprocessRole("moderator"); // अज्ञात भूमिका
\n\n

यह दृष्टिकोण टाइप सुरक्षा प्रदान करता है और कोड में जाँचों की संख्या कम करता है। गंभीर प्रोजेक्ट्स के लिए अनुशंसित।

\n\n

तरीका 3. कस्टम हेल्पर

ब्लॉग

पुस्तक अनुशंसाएँ