Declaration merging అనేది TypeScript బహుళ ప్రకటనలను ఒకే పేరుతో ఒక నిర్వచనంలో కలపడం. Interfaces, namespaces, మరియు కొన్ని ఇతర నిర్మాణాలు స్వయంచాలకంగా కలుస్తాయి.
Interface మర్జింగ్
interface Box { width: ; }
{ : ; }
Declaration merging అనేది TypeScript బహుళ ప్రకటనలను ఒకే పేరుతో ఒక నిర్వచనంలో కలపడం. Interfaces, namespaces, మరియు కొన్ని ఇతర నిర్మాణాలు స్వయంచాలకంగా కలుస్తాయి.
interface Box { width: ; }
{ : ; }
మీరు సొంతం కాని లైబ్రరీలు లేదా గ్లోబల్లకు రకాలను జోడించడం ఎలా:
// 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కు జోడించడం, లైబ్రరీ రకాలను అనుకూలీకరించడం, థీమింగ్ సిస్టమ్లు.
మీరు నియంత్రించని రకాలను అనుకూలీకరించాల్సిన వాస్తవ అనువర్తనాలను టైప్ చేయడానికి ఇది ఎవరిని రకం చేయకుండా ఇది అవసరమైన జ్ఞానం.