دمج التصريحات هو عملية يقوم بها TypeScript بدمج تصريحات متعددة بنفس الاسم في تعريف واحد. تندمج الواجهات (Interfaces) والمساحات (Namespaces) وبعض الإنشاءات الأخرى تلقائياً.
دمج الواجهات
ts
interface Box { width: number; }
{ : ; }
دمج التصريحات هو عملية يقوم بها TypeScript بدمج تصريحات متعددة بنفس الاسم في تعريف واحد. تندمج الواجهات (Interfaces) والمساحات (Namespaces) وبعض الإنشاءات الأخرى تلقائياً.
interface Box { width: number; }
{ : ; }
هذه هي الطريقة التي تضيف بها أنواع للمكتبات أو المتغيرات العامة التي لا تمتلكها:
// 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; }
}
نظراً لأن Request/Options للمكتبة هي interface، فإن تصريحك ينضم إليها بدلاً من التعارض — مما يسمح لك بتوسيع الأنواع بأمان دون تحريرها.
function greet() {}
namespace greet { export const version = "1.0"; }
greet.version; // "1.0" — namespace merged onto the function
type أن يفعل هذاtype A = { x: number };
type A = { y: number }; // ❌ Error: duplicate identifier
اسم مستعار للنوع فريد؛ فقط الواجهات (والمساحات) تندمج — وهذا سبب رئيسي لاستخدام interface لأشكال API العام القابلة للتوسع.
دمج التصريحات هو الآلية خلف module augmentation — توسيع طلبات Express وإضافة إلى window وتخصيص أنواع المكتبة وأنظمة المواضيع.
إنها معرفة أساسية لتحديد نوع التطبيقات الحقيقية حيث يجب عليك تكييف الأنواع التي لا تتحكم بها، دون نسخها.