TypeScript में TS7006 त्रुटि: पैरामीटर को implicitly 'any' प्रकार क्यों मिलता है और इसे कैसे ठीक करें

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

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

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

परिचय: "डरावनी" त्रुटि, जो वास्तव में आपकी मित्र है

\n\n

आप TypeScript में कोड लिख रहे हैं, सब कुछ ठीक चल रहा है, और अचानक — बैम! लाल रेखांकन। कंपाइलर नाराज़गी से बड़बड़ाता है: «TS7006: Parameter 'xxx' implicitly has an 'any' type»। यह स्थिति परिचित है? यदि आपने कभी इस त्रुटि का सामना किया है, तो आप अकेले नहीं हैं। Stack Overflow पर इस प्रश्न ने हज़ारों बार देखा गया है, और हर दिन दर्जनों डेवलपर उत्तर की तलाश में "Typescript TS7006" गूगल करते हैं।

\n\n

लेकिन आइए हम तुरंत सहमत हो जाएं: यह त्रुटि दुश्मन नहीं, बल्कि आपके कोड की सबसे अच्छी मित्र है। यह आपको प्रकारों के बारे में सोचने के लिए मजबूर करती है, और इसलिए, आपके प्रोजेक्ट को अधिक विश्वसनीय बनाती है। इस लेख में हम समझेंगे कि TS7006 क्यों होती है, इसे कैसे ठीक करें और भविष्य में ऐसी स्थितियों से कैसे बचें। चलिए शुरू करते हैं!

\n\n

TS7006 क्या है और यह क्यों दिखाई देती है?

\n\n

TS7006 TypeScript कंपाइलर की एक त्रुटि है, जो तब होती है जब आप किसी फ़ंक्शन के पैरामीटर का प्रकार स्पष्ट रूप से निर्दिष्ट किए बिना उसका उपयोग करते हैं, और आपके प्रोजेक्ट में noImplicitAny विकल्प सक्षम होता है। यह जटिल लगता है? वास्तव में सब कुछ सरल है।

\n\n

कल्पना करें कि TypeScript एक सख्त शिक्षक है जो मांग करता है: "मुझे बताओ कि यह पैरामीटर किस प्रकार का है!"। यदि आप चुप रहते हैं (प्रकार निर्दिष्ट नहीं करते) और noImplicitAny विकल्प सक्षम है, तो शिक्षक फेल कर देता है — यानी त्रुटि देता है।

\n\n

यहाँ एक क्लासिक उदाहरण है:

\n\n
function greet(name) {\n  return `नमस्ते, ${name}!`;\n}\n// त्रुटि: TS7006: Parameter 'name' implicitly has an 'any' type\n
\n\n

TypeScript नहीं जानता कि name क्या है — स्ट्रिंग, संख्या या ऑब्जेक्ट। डिफ़ॉल्ट रूप से, यह any प्रकार निर्दिष्ट कर सकता था (जिसका अर्थ है "कोई फर्क नहीं पड़ता"), लेकिन यदि सख्त जाँच सक्षम है, तो यह स्पष्ट निर्दिष्टीकरण की मांग करता है।

\n\n

यह उपयोगी क्यों है?

\n\n

any प्रकार TypeScript के लिए एक "ब्लैक होल" की तरह है। यह उस पैरामीटर के लिए प्रकार जाँच को बंद कर देता है, और आप TypeScript के सभी लाभ खो देते हैं: ऑटो-कम्प्लीशन, संकलन चरण पर त्रुटि जाँच और कोड की स्व-दस्तावेज़ीकरण क्षमता। TS7006 त्रुटि आपको कंपाइलर के प्रति ईमानदार होने के लिए मजबूर करती है।

\n\n

TS7006 को ठीक करने के 5 तरीके (कोड उदाहरणों के साथ)

\n\n

आइए समस्या को हल करने के सभी संभावित तरीकों पर विचार करें। सबसे सही से लेकर "अस्थायी समाधान" तक (जिनका भी उपयोग किया जा सकता है)।

\n\n

1. पैरामीटर का प्रकार स्पष्ट रूप से निर्दिष्ट करें (अनुशंसित तरीका)

\n\n

सबसे स्पष्ट और सही तरीका केवल प्रकार एनोटेशन जोड़ना है:

\n\n
function greet(name: string): string {\n  return `नमस्ते, ${name}!`;\n}\n\n// या ऑब्जेक्ट के साथ एक अधिक जटिल उदाहरण\ninterface User {\n  id: number;\n  name: string;\n  email: string;\n}\n\nfunction processUser(user: User): void {\n  console.log(`उपयोगकर्ता को संसाधित कर रहे हैं: ${user.name}`);\n}\n
\n\n

यह तरीका कोड को स्व-दस्तावेज़ीकरण बनाता है। कोई अन्य डेवलपर (या एक महीने बाद आप) तुरंत समझ जाएगा कि फ़ंक्शन किस डेटा की अपेक्षा करता है।

\n\n

2. डिफ़ॉल्ट मानों का उपयोग करें

\n\n

TypeScript डिफ़ॉल्ट मान से पैरामीटर का प्रकार निकालने के लिए पर्याप्त स्मार्ट है:

\n\n
function multiply(a: number, b = 10): number {\n  return a * b;\n}\n\n// TypeScript अपने आप समझ जाएगा कि b एक number है\nmultiply(5);     // 50\nmultiply(5, 20); // 100\n
\n\n

यह काम करता है, लेकिन सावधान रहें: यदि आप तर्क पास करना भूल जाते हैं, तो TypeScript त्रुटि नहीं देगा, बल्कि डिफ़ॉल्ट मान का उपयोग करेगा। कभी-कभी यही आवश्यक होता है, कभी-कभी नहीं।

\n\n

3. प्रकार के साथ rest-पैरामीटर का उपयोग करें

\n\n

यदि आपका फ़ंक्शन एक ही प्रकार के अनिश्चित संख्या में तर्क स्वीकार करता है:

\n\n
function sum(...numbers: number[]): number {\n  return numbers.reduce((acc, curr) => acc + curr, 0);\n}\n\nconsole.log(sum(1, 2, 3, 4, 5)); // 15\n
\n\n

ध्यान दें: ...numbers: number[] — संख्याओं की एक सरणी। प्रकार निर्दिष्ट किए बिना, TS7006 यहाँ भी दिखाई देगी।

\n\n

4. लचीलेपन के लिए जेनेरिक (generics) का उपयोग करें

\n\n

जब पैरामीटर का प्रकार भिन्न हो सकता है

ब्लॉग

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