Združevanje deklaracij je TypeScript kombiniranje več deklaracij z istim imenom v eno samo definicijo. Vmesniki, imenski prostori in nekatere druge konstrukcije se samodejno združijo.
Združevanje vmesnikov
interface Box { : ; }
{ : ; }
Združevanje deklaracij je TypeScript kombiniranje več deklaracij z istim imenom v eno samo definicijo. Vmesniki, imenski prostori in nekatere druge konstrukcije se samodejno združijo.
interface Box { : ; }
{ : ; }
Tako dodate tipe knjižnicam ali globalnim stvarem, ki jih ne lastite:
// 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; }
}
Ker je Request/Options knjižnice interface, se vaša deklaracija zdrži v njej namesto da bi kolidirala — kar vam omogoča varno razširitev tipov, ki jih ne morete urejati.
function greet() {}
namespace greet { export const version = "1.0"; }
greet.version; // "1.0" — namespace merged onto the function
type ne more tega naredititype A = { x: number };
type A = { y: number }; // ❌ Error: duplicate identifier
Aliasi tipov so edinstven; samo vmesniki (in imenski prostori) se združijo — ključni razlog za uporabo interface za razširljive oblike javnih API-jev.
Združevanje deklaracij je mehanizem za povečevanjem modulov — razširjanjem Express-zahtev, dodajanjem v window, prilagajanjem tipov knjižnic, sistemov tematizacije.
To je bistveno znanje za tipiziranje resničnih aplikacij, kjer morate prilagoditi tipe, ki jih ne kontrolirate, brez njihovega deljeenja.