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 { : ; }
{ : ; }
Declaration merging ni TypeScript inayounganisha deklarations nyingi na jina moja katika ufafanuzi mmoja. Interfaces, namespaces, na baadhi ya constructs nyingine zinaunganisha kiotomatiki.
interface { : ; }
{ : ; }
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.
Maktaba ya maswali ya mahojiano ya IT yenye majibu ya kina — kutoka Junior hadi Senior.
Changia