Declaration merging ni TypeScript inayounganisha deklarations nyingi na jina moja katika ufafanuzi mmoja. Interfaces, namespaces, na baadhi ya constructs nyingine zinaunganisha kiotomatiki.
Interface merging
interface Box { : ; }
{ : ; }
Declaration merging ni TypeScript inayounganisha deklarations nyingi na jina moja katika ufafanuzi mmoja. Interfaces, namespaces, na baadhi ya constructs nyingine zinaunganisha kiotomatiki.
interface Box { : ; }
{ : ; }
Hii ndio jinsi unavyoongeza aina kwa maktaba au ulimwengu ambao hauuni:
// 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; }
}
Kwa sababu Request/Options ya maktaba ni interface, deklaresho lako unganisha katika hiyo badala ya kutatanisha — ikikunruhusu kupanua aina usizoweza kurekebishwa.
function greet() {}
namespace greet { export const version = "1.0"; }
greet.version; // "1.0" — namespace merged onto the function
type haiwezi kufanya hiitype A = { x: number };
type A = { y: number }; // ❌ Error: duplicate identifier
Type aliases ni ya kipekee; tu interfaces (na namespaces) unganisha — sababu kuu ya kutumia interface kwa umbo la API ya umma linalolapuka.
Declaration merging ni utaratibu nyuma ya module augmentation — kupanua Express requests, kuongeza window, kukamatia aina za maktaba, mifumo ya kupamba.
Ni ujuzi muhimu kwa kuandika aina ya programu halisi ambapo lazima urekebishe aina usizodhibiti, bila kuigawanya.