जावास्क्रिप्ट में, एक TypeError एक ऑब्जेक्ट है जो एक ऑपरेशन करने के परिणामस्वरूप एक त्रुटि का प्रतिनिधित्व करता है जिसे निष्पादित नहीं किया जा सकता है, आमतौर पर क्योंकि ऑपरेशन में एक मान अपेक्षित प्रकार का नहीं होता है।
लेकिन प्रकार क्या हैं? जावास्क्रिप्ट विनिर्देशों के नवीनतम संस्करण, ईसीएमएस्क्रिप्ट के अनुसार, नौ डेटा और संरचनात्मक प्रकार हैं। जिनमें से छह, (कभी-कभी सात अगर हम शून्य की गिनती करते हैं), आदिम डेटा प्रकार हैं, जो स्ट्रिंग, संख्या, बिगिंट, बूलियन, अपरिभाषित और प्रतीक हैं। इससे पहले कि हम यह समझ सकें कि किसी ऑपरेशन के दौरान TypeErrors ट्रिगर क्यों होता है, आइए जावास्क्रिप्ट में हमारे नौ प्रकारों की समीक्षा करें। यदि हम कभी ऐसी स्थिति में होते हैं जहाँ हम अनिश्चित होते हैं कि किसी प्रकार को कैसे वर्गीकृत किया जाए, तो हम टाइपऑफ़ ऑपरेटर का उपयोग कर सकते हैं।
- अपरिभाषित:एक प्रकार का मान जो स्वचालित रूप से उन चरों के लिए परिभाषित हो जाता है जिन्हें अभी घोषित किया गया है। जब हम परिभाषित करना भूल जाते हैं या अपने वेरिएबल में कोई मान जोड़ना भूल जाते हैं, तो हमें अक्सर अपरिभाषित का टाइप एरर मान मिलता है।
- बूलियन:तार्किक डेटा प्रकार जिसमें केवल सही या गलत के मान होते हैं।
- संख्या:संख्यात्मक डेटा प्रकार।
- स्ट्रिंग:बैकटिक्स, सिंग या डबल कोट्स के अंदर वर्णों का क्रम।
- बिगइंट:संख्यात्मक डेटा प्रकार जिसे कभी-कभी अन्य प्रोग्रामिंग भाषाओं में बिग्नम के रूप में जाना जाता है।
- प्रतीक:वह मान जो एक विशिष्ट पहचानकर्ता का प्रतिनिधित्व करता है जिसे सिंबल फ़ंक्शन को लागू करके बनाया गया है।
- ऑब्जेक्ट:एक संरचनात्मक प्रकार और लगभग कुछ भी जो 'नया' कीवर्ड बनाने में सक्षम है, जैसे एक सरणी, वस्तु, नक्शा, सेट, आदि।
- फ़ंक्शन:एक अन्य गैर-डेटा संरचना जो एक कोड स्निपेट है जिसे कोड के अन्य टुकड़ों द्वारा बुलाया जा सकता है।
- शून्य:आमतौर पर एक जानबूझकर मूल्य जो किसी वस्तु या पते का प्रतिनिधित्व करता है जो मौजूद नहीं है।
अधिकांश सामान्य JavaScript लेखन त्रुटियां और उन्हें कैसे ठीक करें
किसी ऐसे मान को बदलने का प्रयास करते समय जिसे बदला नहीं जा सकता या अनुचित तरीके से किसी मान का उपयोग करते समय TypeErrors आप पर फेंके जा सकते हैं। यह तब भी हो सकता है जब किसी फ़ंक्शन को तर्क पारित किया जाता है जो फ़ंक्शन या फ़ंक्शन के अंदर ऑपरेटर द्वारा अपेक्षित प्रकार के साथ असंगत है।
ऐसा मान बदलना जिसे बदला नहीं जा सकता
जब आप किसी चीज़ को मान निर्दिष्ट करने के लिए कॉन्स्टेबल कीवर्ड का उपयोग करते हैं, तो इसका मतलब है कि यह स्थिर है, यह नहीं बदलेगा। एक स्थिर चर के मान को बदलने का प्रयास करने के परिणामस्वरूप एक TypeError होगा।
const a = 5 a = "5" // Uncaught TypeError: Assignment to constant variable.
हम इसे केवल उस पहचानकर्ता का नाम बदलकर ठीक कर सकते हैं जिसे हम "5" की स्ट्रिंग की पहचान करना चाहते हैं।
const a = 5 const b = "5"
किसी मान का अनुचित तरीके से उपयोग करना
डेवलपर्स को यह भी सुनिश्चित करना चाहिए कि मूल्यों का उपयोग इरादा के अनुसार किया जा रहा है। नीचे दिए गए उदाहरण में, "कैट" और "गारफ़ील्ड" यह सत्यापित करने का प्रयास करते समय पीछे की ओर हैं कि क्या गारफ़ील्ड कैट () फ़ंक्शन का एक उदाहरण है।
function Cat() {} function Dog() {} let garfield = new Cat() Cat instanceof garfield // Uncaught TypeError: Right-hand side of 'instanceof' is not callable
हम दोनों के क्रम को ठीक करके इसे ठीक कर सकते हैं।
function Cat() {} function Dog() {} let garfield = new Cat() garfield instanceof Cat
एक तर्क जो किसी फ़ंक्शन द्वारा अपेक्षित प्रकार के साथ असंगत है
एक ऑपरेशन को कोड करते समय, डेवलपर्स को यह सुनिश्चित करना होता है कि वे मूल्यों का उपयोग उन तरीकों से कर रहे हैं जिनसे वे वांछित परिणाम प्राप्त करने में सक्षम हैं। किसी वस्तु की अनुपस्थिति को दर्शाने के लिए नल का मान जानबूझकर उपयोग किया जा सकता है, लेकिन जिस तरह से इसका उपयोग नीचे किया जाता है, उसके परिणामस्वरूप एक टाइपएरर होगा क्योंकि इसका उपयोग एक तर्क के रूप में किया जा रहा है जो फ़ंक्शन द्वारा अपेक्षित प्रकार के साथ असंगत है।
81% प्रतिभागियों ने कहा कि बूटकैंप में भाग लेने के बाद उन्हें अपनी तकनीकी नौकरी की संभावनाओं के बारे में अधिक आत्मविश्वास महसूस हुआ। आज ही एक बूटकैंप से मिलान करें।
बूटकैंप शुरू करने से लेकर अपनी पहली नौकरी खोजने तक, औसत बूटकैंप ग्रेड ने करियर संक्रमण में छह महीने से भी कम समय बिताया।
function readingErrorsAreImportant(a){ if(a.length === 5){ return "equals five" } else if(a.length > 5) { return "Greater than five" } else { return "Less than five" } } console.log(readingErrorsAreImportant(null)) // Uncaught TypeError: Cannot read property 'length' of null
हम इसे उस मूल्य प्रकार में पास करके ठीक कर सकते हैं जिसकी वह अपेक्षा कर रहा है। एक संख्यात्मक मान प्रकार की तरह।
function readingErrorsAreImportant(a){ if(a.length === 5){ return "equals five" } else if(a.length > 5) { return "Greater than five" } else { return "Less than five" } } console.log(readingErrorsAreImportant(10))
निष्कर्ष
यह समझने में सक्षम होना महत्वपूर्ण है कि आपका कोड एक प्रकार की त्रुटि क्यों फेंक रहा है ताकि आप यह समझ सकें कि इसे कैसे डिबग करना है। यदि आप कभी भी ऐसी स्थिति में हैं जहां आप सुनिश्चित नहीं हैं कि किसी प्रकार को कैसे वर्गीकृत किया जाए, तो टाइपऑफ़ ऑपरेटर आपको डिबगिंग के साथ कैसे आगे बढ़ना चाहिए, इसकी बेहतर समझ के लिए आपको नौ डेटा या संरचनात्मक प्रकारों में से एक लौटाएगा।