TypeScript: फंक्शन को पैरामीटर के रूप में सख्त टाइपिंग के साथ उपयोग करना

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

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

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

TypeScript: फंक्शन को पैरामीटर के रूप में सख्त टाइपिंग के साथ उपयोग करना — उदाहरण सहित पूरी गाइड

\n\n

नमस्ते दोस्त! अगर आपने कभी JavaScript में कोड लिखा है और एक फंक्शन को दूसरे फंक्शन में पास किया है (जैसे setTimeout या Array.map में), तो आप हायर ऑर्डर फंक्शन की अवधारणा से पहले से ही परिचित हैं। लेकिन जब TypeScript की बात आती है, तो एक स्वाभाविक सवाल उठता है: "क्या मैं उस फंक्शन को सख्ती से टाइप कर सकता हूँ जिसे मैं पैरामीटर के रूप में पास कर रहा हूँ?"। जवाब है — हाँ, और यह भाषा की सबसे शक्तिशाली विशेषताओं में से एक है।

\n\n

इस लेख में, हम जानेंगे कि TypeScript में फंक्शन टाइप कैसे घोषित करें, उन्हें आर्गुमेंट के रूप में कैसे पास करें, और सिग्नेचर में गलती कैसे न करें। आप सीखेंगे कि कैसे अपने कोड को न केवल सुरक्षित बनाएं, बल्कि स्व-दस्तावेजीकरण भी करें। चलिए शुरू करते हैं!

\n\n

वैसे, यह सवाल Stack Overflow पर सबसे लोकप्रिय में से एक है (हजारों व्यूज)। तो अगर आप इसे हमेशा के लिए समझना चाहते हैं — तो आप सही जगह पर हैं।

\n\n

यह क्यों महत्वपूर्ण है: सख्त टाइपिंग समय बचाती है

\n\n

कल्पना करें कि आप एक ऐसा फंक्शन लिख रहे हैं जो दूसरे फंक्शन (कॉलबैक) को स्वीकार करता है। टाइप के बिना, आप गलती से गलत संख्या में आर्गुमेंट या गलत रिटर्न वैल्यू वाला फंक्शन पास कर सकते हैं। TypeScript ऐसी गलतियों को रनटाइम के बजाय कंपाइलेशन के समय ही पकड़ लेता है। यह आपके कोड के लिए एक बीमा पॉलिसी की तरह है।

\n\n

यहाँ एक उदाहरण है जो टाइप के बिना काम नहीं करेगा:

\n\n
// JavaScript (बिना टाइप के) — गलती सिर्फ रनटाइम पर दिखेगी\nfunction processData(callback) {\n    const result = callback(10, 20);\n    console.log(result);\n}\n\n// उफ़, एक पैरामीटर वाला फंक्शन पास कर दिया\nprocessData((x) => x * 2); // NaN — क्योंकि दूसरा पैरामीटर undefined है
\n\n

TypeScript के साथ, हम स्पष्ट रूप से बता सकते हैं कि कॉलबैक की सिग्नेचर क्या होनी चाहिए:

\n\n
// TypeScript — कंपाइलेशन पर ही गलती पकड़ ली जाएगी\nfunction processData(callback: (a: number, b: number) => number): void {\n    const result = callback(10, 20);\n    console.log(result);\n}\n\n// ✅ सही\nprocessData((x, y) => x + y); // 30\n\n// ❌ गलती: Type '(x: number) => number' असाइन नहीं हो सकता टाइप '(a: number, b: number) => number' को\n// processData((x) => x * 2);
\n\n

बढ़िया है, है ना? अब आइए ऐसे टाइप घोषित करने के सभी तरीकों को समझते हैं।

\n\n

तरीका 1: इनलाइन सिग्नेचर (सबसे आसान)

\n\n

सबसे सीधा तरीका है फंक्शन की सिग्नेचर को सीधे पैरामीटर में बताना। यह तब उपयोगी होता है जब फंक्शन-पैरामीटर का उपयोग केवल एक बार होता है।

\n\n
// एक फंक्शन जो दूसरे फंक्शन को दो नंबरों के साथ लेता है और स्ट्रिंग लौटाता है\nfunction formatNumbers(\n    a: number,\n    b: number,\n    formatter: (x: number, y: number) => string\n): string {\n    return formatter(a, b);\n}\n\n// उपयोग\nconst result = formatNumbers(5, 10, (x, y) => `योग: ${x + y}`);\nconsole.log(result); // "योग: 15"
\n\n

फायदे: तेज़, स्पष्ट।
\nनुकसान: अगर सिग्नेचर बार-बार उपयोग होती है, तो कोड डुप्लिकेट होगा।

\n\n

तरीका 2: फंक्शन के लिए टाइप एलियास (पुन: प्रयोज्य)

\n\n

अगर आप एक ही सिग्नेचर का कई जगहों पर उपयोग कर रहे हैं, तो इसे टाइप एलियास में निकालना बेहतर है। इससे कोड साफ और मेंटेन करने में आसान हो जाता है।

\n\n
// फंक्शन टाइप घोषित करें\ntype Callback = (error: Error | null, data: string) => void;\n\n// फंक्शन जो Callback को स्वीकार करता है\nfunction fetchData(url: string, callback: Callback): void {\n    // एसिंक्रोनस रिक्वेस्ट का अनुकरण\n    setTimeout(() => {\n        if (url) {\n            callback(null, "डेटा प्राप्त हुआ");\n        } else {\n            callback(new Error("URL खाली है"), "");\n        }\n    }, 1000);\n}\n\n// उपयोग\nfetchData("/api/data", (err, data) => {\n    if (err) {\n        console.error("गलती:", err.message);\n    } else {\n        console.log("सफलता:", data);\n    }\n});
\n\n

ध्यान दें: हमने रिटर्न टाइप के रूप में void का उपयोग किया है। इसका मतलब है कि फंक्शन कुछ भी वापस नहीं कर सकता है या उसे वापस करने की आवश्यकता नहीं है।

ब्लॉग

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