मुख्य सामग्री पर जाएं
मॉड्यूल 7 · पाठ 2 का 2पाठ्यक्रम में 14/14~15 min
मॉड्यूल पाठ (2/2)

घोषणाएँ और विलय

किसी भी वास्तविक तर्क को लागू किए बिना मौजूदा जावास्क्रिप्ट कोड के आकार का वर्णन करने के लिए टाइप डिक्लेरेशन फ़ाइलों (.d.ts एक्सटेंशन के साथ) का उपयोग टाइपस्क्रिप्ट में किया जाता है। उनमें केवल प्रकार की परिभाषाएँ, इंटरफ़ेस और फ़ंक्शन हस्ताक्षर होते हैं।

शुद्ध जावास्क्रिप्ट में लिखी गई तृतीय-पक्ष लाइब्रेरी का उपयोग करते समय ये फ़ाइलें आवश्यक हैं।


घोषणा विलय

घोषणा विलय एक ऐसा व्यवहार है जहां कंपाइलर एक ही नाम से घोषित दो या दो से अधिक अलग-अलग घोषणाओं को एक ही परिभाषा में विलय कर देता है।

सबसे आम मामला इंटरफ़ेस विलय है:

TS
interface User {
  name: string;
}

interface User {
  age: number;
}

// The resulting User interface has both name and age properties!
const student: User = {
  name: 'Alice',
  age: 23,
};

यदि संपत्तियों का नाम समान है, तो वे एक ही प्रकार की होनी चाहिए, अन्यथा टाइपस्क्रिप्ट एक त्रुटि की रिपोर्ट करेगा।


वैश्विक और बाहरी मॉड्यूल को संशोधित करना

हम अन्य मॉड्यूल या वैश्विक दायरे में परिभाषित इंटरफेस का विस्तार करने के लिए घोषणा विलय का उपयोग कर सकते हैं।

उदाहरण के लिए, यदि हम ब्राउज़र के वैश्विक window ऑब्जेक्ट में कोई प्रॉपर्टी जोड़ना चाहते हैं:

TS
declare global {
  interface Window {
    analyticsToken: string;
  }
}

declare global का उपयोग करके, हम टाइपस्क्रिप्ट को बताते हैं कि हम मौजूदा वैश्विक Window इंटरफ़ेस में एक नया हस्ताक्षर डाल रहे हैं।


खुद कोशिश करना

अभ्यास 1: मूल घोषणा विलय

व्यायाम#ts.m7.l2.e1
प्रयास: 0लोड हो रहा है...

टाइपस्क्रिप्ट में, समान दायरे में समान नाम वाले इंटरफ़ेस स्वचालित रूप से मर्ज हो जाते हैं। संपत्ति नाम: स्ट्रिंग के साथ एक इंटरफ़ेस उपयोगकर्ता घोषित करें, फिर दूसरे ब्लॉक में समान इंटरफ़ेस घोषित करें उपयोगकर्ता संपत्ति आयु: संख्या जोड़ रहा है। अंत में, उपयुक्त मानों के साथ उपयोगकर्ता प्रकार का एक निरंतर उपयोगकर्ता घोषित करें।

संपादक लोड हो रहा है...
संकेत दिखाएँ

इंटरफ़ेस उपयोगकर्ता को दो बार घोषित करें, संबंधित गुणों को सम्मिलित करें, और फिर उपयोगकर्ता ऑब्जेक्ट को फ़ील्ड निर्दिष्ट करें।

3 प्रयासों के बाद समाधान उपलब्ध है

अभ्यास 2: ग्लोबल विंडो इंटरफ़ेस का विस्तार

व्यायाम#ts.m7.l2.e2
प्रयास: 0लोड हो रहा है...

कल्पना कीजिए कि आप रिकॉर्ड<स्ट्रिंग, स्ट्रिंग> प्रकार की कॉन्फ़िगरेशन नामक एक कस्टम प्रॉपर्टी जोड़ने के लिए वैश्विक विंडो इंटरफ़ेस का विस्तार करना चाहते हैं। नई प्रॉपर्टी को ग्लोबल विंडो इंटरफ़ेस में मर्ज करने के लिए वैश्विक घोषणा का उपयोग करके सही घोषणा लिखें।

संपादक लोड हो रहा है...
संकेत दिखाएँ

डिक्लेयर ग्लोबल {इंटरफ़ेस विंडो {कॉन्फ़िगरेशन: रिकॉर्ड<स्ट्रिंग, स्ट्रिंग>; का उपयोग करें; } }.

3 प्रयासों के बाद समाधान उपलब्ध है