TypeScript में विभिन्न प्रकारों वाले ऐरे: उदाहरणों के साथ पूर्ण गाइड

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

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

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

परिचय: एक प्रकार क्यों उबाऊ है?

\n\n

कल्पना करें: आप TypeScript में लिख रहे हैं और अचानक ऐसी स्थिति का सामना करते हैं जहाँ ऐरे को विभिन्न प्रकारों का डेटा संग्रहीत करना होता है। उदाहरण के लिए, एक सूची जहाँ प्रत्येक तत्व या तो string है या number। या नाम (स्ट्रिंग) और आयु (संख्या) का एक टपल।

\n\n

कई शुरुआती (और केवल वे ही नहीं) प्रश्न पूछते हैं: "TypeScript में कई प्रकारों वाला ऐरे कैसे घोषित करें?" इस प्रश्न ने Stack Overflow पर हज़ारों व्यूज़ प्राप्त किए हैं - और यह व्यर्थ नहीं है। TypeScript प्रकारों के मामले में सख्त है, लेकिन साथ ही ऐसे मामलों के लिए लचीले उपकरण प्रदान करता है।

\n\n

इस लेख में हम मिश्रित प्रकारों के ऐरे के साथ काम करने के सभी तरीकों पर चर्चा करेंगे: सरल यूनियन-प्रकारों से लेकर टपल और जेनेरिक तक। आप सीखेंगे कि कब किस दृष्टिकोण का उपयोग करना है, और any के जाल में कैसे नहीं फँसना है।

\n\n

1. यूनियन टाइप: सबसे सरल तरीका

\n\n

सबसे स्पष्ट विकल्प यूनियन टाइप (प्रकारों का संघ) का उपयोग करना है। यह तब होता है जब आप कहते हैं: "ऐरे में string या number प्रकार के तत्व हो सकते हैं"।

\n\n
// ऐरे जिसमें स्ट्रिंग या संख्याएँ हो सकती हैं\nconst mixedArray: (string | number)[] = ['hello', 42, 'world', 100];\n\n// वैकल्पिक लेखन (समतुल्य)\nconst mixedArray2: Array<string | number> = ['hello', 42, 'world', 100];
\n\n

यहाँ (string | number)[] का अर्थ है: "एक ऐरे जिसका प्रत्येक तत्व स्ट्रिंग या संख्या है"। TypeScript जाँच करेगा कि आप इसमें बूलियन मान या ऑब्जेक्ट जोड़ने का प्रयास न करें।

\n\n

यह कब सुविधाजनक है?

\n
    \n
  • जब तत्वों का क्रम महत्वपूर्ण नहीं है, बल्कि केवल अनुमत प्रकारों का सेट महत्वपूर्ण है।
  • \n
  • जब आप किसी API के साथ काम कर रहे हैं जो विषम डेटा का ऐरे लौटाता है।
  • \n
  • जब आप ID (संख्या) और नाम (स्ट्रिंग) की सूची एक ही ऐरे में संग्रहीत कर रहे हैं।
  • \n
\n\n

छिपा हुआ खतरा

\n

यूनियन-प्रकारों का उपयोग करते समय, आप गारंटी नहीं दे सकते कि पहली स्थिति में स्ट्रिंग होगी और दूसरी में संख्या। टाइपिंग केवल यह कहती है: "ऐरे में स्ट्रिंग और संख्याएँ हैं, लेकिन किस क्रम में - अज्ञात"।

\n\n
const arr: (string | number)[] = [1, 'hello'];\n// TypeScript नहीं जानता: arr[0] — number है या string?\nconst first = arr[0]; // प्रकार: string | number\n// इसे संख्या के रूप में उपयोग करने के लिए, प्रकार को संकीर्ण करना होगा:\nif (typeof first === 'number') {\n    console.log(first.toFixed(2));\n}
\n\n

2. टपल: जब क्रम महत्वपूर्ण है

\n\n

यदि आपको ऐरे की निश्चित संरचना चाहिए - उदाहरण के लिए, पहले स्ट्रिंग, दूसरे में संख्या, तीसरे में बूलियन मान - तो टपल (tuple types) का उपयोग करें।

\n\n
// टपल: [स्ट्रिंग, संख्या, बूलियन]\nconst person: [string, number, boolean] = ['Alice', 30, true];\n\n// लेबल वाला टपल - अधिक पठनीय\nconst product: [name: string, price: number, inStock: boolean] = ['Laptop', 1200, true];
\n\n

टपल तत्वों की संख्या और प्रत्येक स्थिति पर प्रकार को सख्ती से निर्धारित करते हैं। यदि आप गलत प्रकार का मान निर्दिष्ट करने या अतिरिक्त तत्व जोड़ने का प्रयास करते हैं - TypeScript एक त्रुटि देगा।

\n\n

टपल में Rest-तत्व

\n

TypeScript 4.0 से टपल में rest-तत्व निर्दिष्ट करने की सुविधा आई। यह तब सुविधाजनक है जब संरचना का एक भाग निश्चित है और शेष परिवर्तनशील है:

\n\n
// पहला तत्व — स्ट्रिंग, शेष — संख्याएँ\nconst data: [string, ...number[]] = ['scores', 95, 87, 92];\n\n// संयोजन किया जा सकता है\nconst logEntry: [timestamp: Date, ...messages: string[]] = [new Date(), 'info', 'user logged in'];
\n\n

3. जटिल ऐरे के लिए Type Alias

\n\n

जब ऐरे की संरचना जटिल हो जाती है, तो प्रकार को एक अलग alias (उपनाम) में रखना सुविधाजनक होता है। इससे कोड की पठनीयता में सुधार होता है और प्रकार को पुनः उपयोग करने की अनुमति मिलती है।

\n\n
type UserEntry = [id: number, name: string, email: string, isActive: boolean];\n\nconst users: UserE                

ब्लॉग

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