Deklaráció összevonása az a TypeScript-funkció, amely több azonos nevű deklarációt egyetlen definícióba kombinál. Az interfészek, névterek és néhány más konstrukt automatikusan összevonódnak.
Interfész összevonása
interface Box { : ; }
{ : ; }
Deklaráció összevonása az a TypeScript-funkció, amely több azonos nevű deklarációt egyetlen definícióba kombinál. Az interfészek, névterek és néhány más konstrukt automatikusan összevonódnak.
interface Box { : ; }
{ : ; }
Ezzel lehet típusokat hozzáadni olyan könyvtárakhoz vagy globális elemekhez, amelyek nem az önéi:
// 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; }
}
Mivel a könyvtár Request/Options egy interface, a deklarációja összevonódik az ütközés helyett — lehetővé teszi a típusok biztonságos kibővítését, amelyeket nem szerkeszthetsz.
function greet() {}
namespace greet { export const version = "1.0"; }
greet.version; // "1.0" — namespace merged onto the function
typetype A = { x: number };
type A = { y: number }; // ❌ Error: duplicate identifier
A típusaliasok egyediek; csak az interfészek (és névterek) vonódnak össze — kulcsfontosságú ok az interface használatára a bővíthető nyilvános API formákhoz.
A deklaráció összevonása a modul bővítésének mechanizmusa — az Express-kérelmek kiterjesztése, a window-hoz való hozzáadás, a könyvtár típusainak testreszabása, témarendszerek.
Elengedhetetlen tudás az olyan valódi alkalmazások típusozásához, ahol olyan típusokat kell alkalmazkodnia, amelyeket nem kontrollál, anélkül, hogy ezeket elvégeznék.