Declaration merging yaiku TypeScript nggabung pirang-pirang deklarasi kanthi jeneng padha dadi siji definisi. Interfaces, namespaces, lan sawetara konstruk liyane nggabung kanthi otomatis.
Interface merging
interface Box { : ; }
{ : ; }
Declaration merging yaiku TypeScript nggabung pirang-pirang deklarasi kanthi jeneng padha dadi siji definisi. Interfaces, namespaces, lan sawetara konstruk liyane nggabung kanthi otomatis.
interface Box { : ; }
{ : ; }
Iki carane nambahi tipe menyang library utawa global sing ora sampeyan duwe:
// 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; }
}
Kamit Request/Options ing library yaiku interface, deklarasi sampeyan nggabung menyang iku tinimbang bentur — ngidini sampeyan nambahi tipe kanthi aman sing ora bisa sampeyan sunting.
function greet() {}
namespace greet { export const version = "1.0"; }
greet.version; // "1.0" — namespace merged onto the function
type ora bisa gawe ikitype A = { x: number };
type A = { y: number }; // ❌ Error: duplicate identifier
Type aliases unik; mung interfaces (lan namespaces) nggabung — alasan kunci nggunakake interface kanggo API shapes sing bisa dikembangke.
Declaration merging yaiku mekanisme ing mburi module augmentation — nambahi Express requests, nambahi window, nggawe library types khusus, sistim tema.
Iku pengetahuan penting kanggo typing app nyata ing ngendi sampeyan kudu gawe tipe sing ora sampeyan kontrol, tanpa nggandol.