Declaration merging అనేది TypeScript బహుళ ప్రకటనలను ఒకే పేరుతో ఒక నిర్వచనంలో కలపడం. Interfaces, namespaces, మరియు కొన్ని ఇతర నిర్మాణాలు స్వయంచాలకంగా కలుస్తాయి.
Interface మర్జింగ్
interface Box { : ; }
{ : ; }
Declaration merging అనేది TypeScript బహుళ ప్రకటనలను ఒకే పేరుతో ఒక నిర్వచనంలో కలపడం. Interfaces, namespaces, మరియు కొన్ని ఇతర నిర్మాణాలు స్వయంచాలకంగా కలుస్తాయి.
interface Box { : ; }
{ : ; }
మీరు సొంతం కాని లైబ్రరీలు లేదా గ్లోబల్లకు రకాలను జోడించడం ఎలా:
// 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
టైప్ ఆలియాసেస్ ప్రత్యేకమైనవి; interfaces (మరియు namespaces) మాత్రమే కలుస్తాయి — విస్తరించదగిన పబ్లిక్ API ఆకృతుల కోసం interface ఉపయోగించడానికి కీలక కారణం.
Declaration merging అనేది module augmentation వెనుక ఉన్న విధానం — Express అభ్యర్థనలను విస్తరించడం, windowకు జోడించడం, లైబ్రరీ రకాలను అనుకూలీకరించడం, థీమింగ్ సిస్టమ్లు.
మీరు నియంత్రించని రకాలను అనుకూలీకరించాల్సిన వాస్తవ అనువర్తనాలను టైప్ చేయడానికి ఇది ఎవరిని రకం చేయకుండా ఇది అవసరమైన జ్ఞానం.
జూనియర్ నుండి సీనియర్ వరకు వివరణాత్మక సమాధానాలతో IT ఇంటర్వ్యూ ప్రశ్నల లైబ్రరీ.
విరాళం