Fuziunea declarațiilor este TypeScript combinând mai multe declarații cu același nume într-o singură definiție. Interfețele, spații de nume și alte construcții se fuzionează automat.
Fuziunea interfețelor
interface Box { : ; }
{ : ; }
Fuziunea declarațiilor este TypeScript combinând mai multe declarații cu același nume într-o singură definiție. Interfețele, spații de nume și alte construcții se fuzionează automat.
interface Box { : ; }
{ : ; }
Asta este cum adaugi tipuri la biblioteci sau globale pe care nu le deții:
// 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; }
}
Deoarece Request/Options bibliotecii este o interface, declarația ta se fuzionează în ea mai degrabă decât să intre în conflict — permițândoți să extinzi în siguranță tipuri pe care nu le poți edita.
function greet() {}
namespace greet { export const version = "1.0"; }
greet.version; // "1.0" — namespace merged onto the function
type nu poate face astatype A = { x: number };
type A = { y: number }; // ❌ Error: duplicate identifier
Aliasurile de tip sunt unice; doar interfețele (și spațiile de nume) se fuzionează — un motiv cheie pentru a folosi interface pentru forme API publice extensibile.
Fuziunea declarațiilor este mecanismul din spatele augmentării modulelor — extinderea cererilor Express, adăugarea la window, personalizarea tipurilor bibliotecilor, sisteme de tematizare.
Este cunoaștere esențială pentru tiparea aplicațiilor reale unde trebuie să adaptezi tipuri pe care nu le controlezi, fără a le diviza.
O bibliotecă de întrebări de interviu IT cu răspunsuri detaliate — de la Junior la Senior.
Donează