Declaration merging, TypeScript'in aynı ada sahip birden fazla bildirimi tek bir tanımla birleştirmesidir. Interface'ler, namespace'ler ve bazı diğer yapılar otomatik olarak birleşir.
Interface birleştirme
interface Box { : ; }
{ : ; }
Declaration merging, TypeScript'in aynı ada sahip birden fazla bildirimi tek bir tanımla birleştirmesidir. Interface'ler, namespace'ler ve bazı diğer yapılar otomatik olarak birleşir.
interface Box { : ; }
{ : ; }
Size ait olmayan kütüphanelere veya global değişkenlere türler eklemenin yolu bu:
// 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; }
}
Kütüphanenin Request/Options'i bir interface olduğundan, sizin bildiriminiz bununla birleşir çatışmak yerine — düzenleyemediğiniz türleri güvenle genişletmenize izin verir.
function greet() {}
namespace greet { export const version = "1.0"; }
greet.version; // "1.0" — namespace merged onto the function
type neden bunu yapamaztype A = { x: number };
type A = { y: number }; // ❌ Error: duplicate identifier
Tür takma adları benzersizdir; yalnızca interface'ler (ve namespace'ler) birleşir — genişletilebilir genel API şekilleri için interface kullanmanın ana nedeni.
Declaration merging, module augmentation'ın ardındaki mekanizmadır — Express isteklerini genişletmek, window'a eklemek, kütüphane türlerini özelleştirmek, tema sistemleri.
Kontrol etmediğiniz türleri çatallamadan uyarlamanız gereken gerçek uygulamalar yazmak için gerekli bilgidir.
Junior'dan Senior'a detaylı cevaplarla bir BT mülakat soruları kütüphanesi.
Bağış Yap