Deklarationsfusion er TypeScript, der kombinerer flere deklarationer med samme navn til en enkelt definition. Interfaces, namespaces og nogle andre konstruktioner flettes automatisk.
Interfacesfusion
interface Box { : ; }
{ : ; }
Deklarationsfusion er TypeScript, der kombinerer flere deklarationer med samme navn til en enkelt definition. Interfaces, namespaces og nogle andre konstruktioner flettes automatisk.
interface Box { : ; }
{ : ; }
Sådan tilføjer du typer til biblioteker eller globale variable, du ikke ejer:
// 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; }
}
Fordi bibliotekets Request/Options er en interface, flettes din deklaration ind i den i stedet for at konfrontere — så du kan sikkert udvide typer, du ikke kan redigere.
function greet() {}
namespace greet { export const version = "1.0"; }
greet.version; // "1.0" — namespace merged onto the function
type ikke kan gøre dettetype A = { x: number };
type A = { y: number }; // ❌ Error: duplicate identifier
Typealiaser er unikke; kun interfaces (og namespaces) flettes — en vigtig grund til at bruge interface til udvidelige offentlige API-former.
Deklarationsfusion er mekanismen bag modulaugmentering — udvidelse af Express-anmodninger, tilføjelse til window, tilpasning af bibliotekstyper, temasystemer.
Det er væsentlig viden for typning af rigtige apps, hvor du skal tilpasse typer, du ikke kontrollerer, uden at forgrene dem.
Et bibliotek af IT-interviewspørgsmål med detaljerede svar — fra Junior til Senior.
Donér