घोषणा विलय TypeScript द्वारा समान नाम वाली कई घोषणाओं को एक परिभाषा में जोड़ना है। इंटरफेस, नेमस्पेस और कुछ अन्य निर्माण स्वचालित रूप से विलय हो जाते हैं।
इंटरफेस विलय
interface Box { width: number; }
{ : ; }
घोषणा विलय TypeScript द्वारा समान नाम वाली कई घोषणाओं को एक परिभाषा में जोड़ना है। इंटरफेस, नेमस्पेस और कुछ अन्य निर्माण स्वचालित रूप से विलय हो जाते हैं।
interface Box { width: number; }
{ : ; }
यह वह तरीका है जिससे आप लाइब्रेरी या वैश्विक प्रकारों को जोड़ते हैं जिनके आप मालिक नहीं हैं:
// Add a custom property to Express's Request
declare global {
namespace Express {
interface Request { user?: { id: string }; } // merges into Express.Request
}
}
request.user; // ✅ now typed everywhere
// Augment a module
declare module "some-lib" {
interface Options { newOption: boolean; }
}
क्योंकि लाइब्रेरी का Request/Options एक interface है, आपकी घोषणा इसमें विलय हो जाती है बजाय संघर्ष के — आपको सुरक्षित रूप से उन प्रकारों को विस्तारित करने देता है जिन्हें आप संपादित नहीं कर सकते।
function greet() {}
namespace greet { export const version = "1.0"; }
greet.version; // "1.0" — namespace merged onto the function
type यह क्यों नहीं कर सकताtype A = { x: number };
type A = { y: number }; // ❌ Error: duplicate identifier
टाइप अलियास अनोखे हैं; केवल इंटरफेस (और नेमस्पेस) विलय करते हैं — विस्तार योग्य सार्वजनिक API आकार के लिए interface का उपयोग करने का मुख्य कारण।
घोषणा विलय मॉड्यूल वर्धन के पीछे की मैकेनिज्म है — Express अनुरोधों को बढ़ाना, window में जोड़ना, लाइब्रेरी प्रकारों को कस्टमाइज़ करना, थीमिंग सिस्टम।
वास्तविक ऐप्स को टाइप करने के लिए यह आवश्यक ज्ञान है जहां आपको उन प्रकारों को अनुकूलित करना चाहिए जिन पर आपका नियंत्रण नहीं है।