TypeScript ऑब्जेक्ट के लिए डिफ़ॉल्ट मान कैसे सेट करें: पूरी गाइड

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

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

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

परिचय: यह समस्या इतनी कॉमन क्यों है?

\n\n

हर डेवलपर जो JavaScript से TypeScript पर आता है या इस भाषा में कोड लिखता है, उसे कभी न कभी इस समस्या का सामना करना पड़ता है: फंक्शन में पास किए गए ऑब्जेक्ट के लिए डिफ़ॉल्ट मान कैसे सेट करें? Stack Overflow पर इस सवाल के हज़ारों व्यूज़ और दर्जनों जवाब हैं। क्यों? क्योंकि यह आसान लगने वाला काम — "अगर ऑब्जेक्ट नहीं दिया गया तो खाली ऑब्जेक्ट use करो" — TypeScript में टाइप्स, इंटरफ़ेसेस और डिस्ट्रक्चरिंग के साथ एक चुनौती बन जाता है।

\n\n

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

\n\n

समस्या: सामान्य तरीके में क्या गड़बड़ है?

\n\n

मान लीजिए हमारे पास एक फंक्शन है जो सेटिंग्स का ऑब्जेक्ट लेता है:

\n\n
function createUser(config: { name?: string; age?: number }) {\n  // ...\n}\n\ncreateUser(); // Error! आर्गुमेंट चाहिए\n
\n\n

JavaScript में हम आसानी से function createUser(config = {}) लिख सकते थे और काम खत्म। लेकिन TypeScript में यह ट्रिक काम नहीं करेगी: कंपाइलर टाइप मिसमैच की शिकायत करेगा। क्यों? क्योंकि खाली ऑब्जेक्ट {} इंटरफ़ेस { name?: string; age?: number } से मेल नहीं खाता — इसमें ये प्रॉपर्टीज़ ही नहीं हैं।

\n\n

और यहीं से असली मज़ा शुरू होता है। आइए सभी समाधानों को समझते हैं।

\n\n

तरीका 1: डिस्ट्रक्चरिंग के साथ डिफ़ॉल्ट मान असाइन करना

\n\n

सबसे सुंदर और लोकप्रिय तरीका — फंक्शन पैरामीटर में ही डिस्ट्रक्चरिंग का उपयोग करें। आप ऑब्जेक्ट के प्रॉपर्टीज़ निकालते हैं और उन्हें तुरंत डिफ़ॉल्ट मान देते हैं:

\n\n
function createUser({ name = "अतिथि", age = 18 }: { name?: string; age?: number } = {}) {\n  console.log(`उपयोगकर्ता बनाया गया: ${name}, आयु: ${age}`);\n}\n\ncreateUser(); // "उपयोगकर्ता बनाया गया: अतिथि, आयु: 18"\ncreateUser({ name: "अन्ना" }); // "उपयोगकर्ता बनाया गया: अन्ना, आयु: 18"\ncreateUser({ age: 25 }); // "उपयोगकर्ता बनाया गया: अतिथि, आयु: 25"\n
\n\n

अंत में = {} पर ध्यान दें। यह खुद ऑब्जेक्ट के लिए डिफ़ॉल्ट मान है। अगर आप कोई आर्गुमेंट नहीं देते, TypeScript खाली ऑब्जेक्ट use करता है, और डिस्ट्रक्चरिंग हर प्रॉपर्टी के लिए डिफ़ॉल्ट मान सेट कर देती है।

\n\n

फायदे: साफ, संक्षिप्त, बिल्कुल सही काम करता है।
\nनुकसान: हर प्रॉपर्टी के लिए टाइप स्पष्ट रूप से बताना पड़ता है।

\n\n

तरीका 2: Partial के साथ इंटरफ़ेस का उपयोग

\n\n

अगर आपका ऑब्जेक्ट बड़ा है, तो पैरामीटर में सभी टाइप्स बताना अच्छा नहीं लगता। इंटरफ़ेस को अलग से निकालें और Partial<T> का उपयोग करें:

\n\n
interface UserConfig {\n  name: string;\n  age: number;\n  email: string;\n  isAdmin: boolean;\n}\n\nfunction createUser(config: Partial<UserConfig> = {}) {\n  const defaults: UserConfig = {\n    name: "अतिथि",\n    age: 18,\n    email: "noemail@example.com",\n    isAdmin: false\n  };\n  \n  const mergedConfig = { ...defaults, ...config };\n  console.log(mergedConfig);\n}\n\ncreateUser({ name: "राहुल" });\n// { name: "राहुल", age: 18, email: "noemail@example.com", isAdmin: false }\n
\n\n

यहाँ Partial<UserConfig> सभी प्रॉपर्टीज़ को ऑप्शनल बना देता है। फंक्शन के अंदर हम डिफ़ॉल्ट मानों को पास किए गए मानों के साथ मर्ज करते हैं। यह बढ़िया काम करता है, लेकिन मैन्युअल मर्जिंग की ज़रूरत है।

\n\n

तरीका 3: चेक के साथ क्लासिक तरीका

\n\n

कभी-कभी ज़्यादा कंट्रोल चाहिए। उदाहरण के लिए, अगर आप केवल undefined के लिए डिफ़ॉल्ट मान सेट करना चाहते हैं, null के लिए नहीं। पुराने अच्छे if का उपयोग करें:

\n\n
function createUser(config?: UserConfig) {\n  const name = config?.name ?? "अतिथि";\n  const age = config?.age ?? 18;\n  const email = config?.email ?? "noemail@example.com";\n  \n  console.log({ name, age, email });\n}\n\ncreateUser();                

ब्लॉग

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