Spajanje deklaracija je TypeScript kombiniranje više deklaracija s istim imenom u jednu definiciju. Sučelja, nazivni prostori i neki drugi konstrukti se spajaju automatski.
Spajanje sučelja
interface Box { : ; }
{ : ; }
Spajanje deklaracija je TypeScript kombiniranje više deklaracija s istim imenom u jednu definiciju. Sučelja, nazivni prostori i neki drugi konstrukti se spajaju automatski.
interface Box { : ; }
{ : ; }
Ovako dodajete tipove knjižnicama ili globalima koje ne posjedujete:
// 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; }
}
Zbog toga što je Request/Options knjižnice interface, vaša deklaracija se spaja u njega umjesto sukoba — omogućuje vam sigurno proširenje tipova koje ne možete uređivati.
function greet() {}
namespace greet { export const version = "1.0"; }
greet.version; // "1.0" — namespace merged onto the function
type ne može ovo učinititype A = { x: number };
type A = { y: number }; // ❌ Error: duplicate identifier
Alijasi tipova su jedinstveni; samo sučelja (i nazivni prostori) se spajaju — ključni razlog za korištenje interface za proširive oblike javnog API-ja.
Spajanje deklaracija je mehanizam iza povećanja modula — proširenja zahtjeva Express, dodavanja window, prilagodbe tipova knjižnica, sustava tema.
To je bitno znanje za tipiziranje stvarnih aplikacija gdje trebate prilagoditi tipove koje ne kontrolirate, bez njihova vidljenja.