Łączenie deklaracji to kombinowanie przez TypeScript wielu deklaracji o tej samej nazwie w jedną definicję. Interfejsy, przestrzenie nazw i niektóre inne konstrukty łączą się automatycznie.
Łączenie interfejsów
interface { : ; }
{ : ; }
Łączenie deklaracji to kombinowanie przez TypeScript wielu deklaracji o tej samej nazwie w jedną definicję. Interfejsy, przestrzenie nazw i niektóre inne konstrukty łączą się automatycznie.
interface { : ; }
{ : ; }
Tak dodajesz typy do bibliotek lub globalnych rzeczy, których nie posiadasz:
// 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; }
}
Ponieważ Request/Options biblioteki to interface, twoja deklaracja łączy się z nim zamiast kolidować — pozwalając bezpiecznie rozszerzać typy, których nie możesz edytować.
function greet() {}
namespace greet { export const version = "1.0"; }
greet.version; // "1.0" — namespace merged onto the function
type tego nie może zrobićtype A = { x: number };
type A = { y: number }; // ❌ Error: duplicate identifier
Aliasy typów są unikalne; tylko interfejsy (i przestrzenie nazw) się łączą — główny powód, aby używać interface dla rozszerzalnych publicznych kształtów API.
Łączenie deklaracji to mechanizm stojący za augmentacją modułów — rozszerzaniem żądań Express, dodawaniem do window, dostosowywaniem typów bibliotek, systemami tematyzacji.
To niezbędna wiedza do typowania prawdziwych aplikacji, gdzie musisz adaptować typy, których nie kontrolujesz, bez rozdzielania ich.
Biblioteka pytań rekrutacyjnych IT ze szczegółowymi odpowiedziami — od Juniora do Seniora.
Wesprzyj