Sloučení deklarací je proces, kdy TypeScript kombinuje více deklarací se stejným názvem do jedné definice. Rozhraní, jmenné prostory a některé další konstrukty se slučují automaticky.
Sloučení rozhraní
interface Box { : ; }
{ : ; }
Sloučení deklarací je proces, kdy TypeScript kombinuje více deklarací se stejným názvem do jedné definice. Rozhraní, jmenné prostory a některé další konstrukty se slučují automaticky.
interface Box { : ; }
{ : ; }
Takto přidáte typy knihovnám nebo globálním prvkům, které nevlastníte:
// 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; }
}
Protože Request/Options knihovny je interface, vaše deklarace se s ním slučuje místo konfliktu — umožní vám bezpečně rozšířit typy, které nemůžete upravovat.
function greet() {}
namespace greet { export const version = "1.0"; }
greet.version; // "1.0" — namespace merged onto the function
type nemůže dělattype A = { x: number };
type A = { y: number }; // ❌ Error: duplicate identifier
Aliasy typů jsou jedinečné; pouze rozhraní (a jmenné prostory) se slučují — klíčový důvod, proč používat interface pro rozšiřitelné veřejné API tvary.
Sloučení deklarací je mechanismus za augmentací modulů — rozšiřování požadavků Express, přidávání do window, přizpůsobení typů knihoven, systémy motivů.
Je to zásadní znalost pro psaní typů reálných aplikací, kde musíte přizpůsobit typy, které neovládáte, aniž byste je rozvětvovali.