دمج التصريحات هو عملية يقوم بها TypeScript بدمج تصريحات متعددة بنفس الاسم في تعريف واحد. تندمج الواجهات (Interfaces) والمساحات (Namespaces) وبعض الإنشاءات الأخرى تلقائياً.
دمج الواجهات
interface Box { : ; }
{ : ; }
دمج التصريحات هو عملية يقوم بها TypeScript بدمج تصريحات متعددة بنفس الاسم في تعريف واحد. تندمج الواجهات (Interfaces) والمساحات (Namespaces) وبعض الإنشاءات الأخرى تلقائياً.
interface Box { : ; }
{ : ; }
هذه هي الطريقة التي تضيف بها أنواع للمكتبات أو المتغيرات العامة التي لا تمتلكها:
// 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 وتخصيص أنواع المكتبة وأنظمة المواضيع.
إنها معرفة أساسية لتحديد نوع التطبيقات الحقيقية حيث يجب عليك تكييف الأنواع التي لا تتحكم بها، دون نسخها.
مكتبة من أسئلة مقابلات تقنية المعلومات مع إجابات مفصّلة — من المبتدئ إلى المتقدم.
تبرع