العمل مع مساحات الأسماء في TypeScript

توفر مساحات الأسماء في TypeScript طريقة لتنظيم وإدارة التعليمات البرمجية ضمن نطاق عالمي واحد. تساعد مساحات الأسماء في تجميع التعليمات البرمجية ذات الصلة معًا، ومنع تعارضات التسمية، وتحسين إمكانية صيانة التعليمات البرمجية. يغطي هذا الدليل أساسيات إنشاء واستخدام مساحات الأسماء في TypeScript مع الأمثلة.

ما هي مساحات أسماء TypeScript؟

تُعد المساحات الاسمية طريقة لتغليف الكود في TypeScript. فهي تسمح بتجميع الوظائف والفئات والمتغيرات ذات الصلة في وحدة منطقية واحدة، وهو ما قد يكون مفيدًا في المشروعات الكبيرة لتجنب تضارب الأسماء وتحسين تنظيم الكود.

إنشاء مساحة اسم

لإنشاء مساحة اسم، استخدم الكلمة الأساسية namespace متبوعة باسم وكتلة من التعليمات البرمجية. داخل كتلة مساحة الاسم، حدد الوظائف أو الفئات أو المتغيرات التي يجب أن تكون جزءًا من مساحة الاسم تلك.

// mathUtils.ts

namespace MathUtils {
  export function add(a: number, b: number): number {
    return a + b;
  }

  export function subtract(a: number, b: number): number {
    return a - b;
  }
}

في هذا المثال، تحتوي مساحة الاسم MathUtils على دالتين، add وsubtract، وكلاهما يتم تصديرهما للاستخدام خارج مساحة الاسم.

استخدام مساحة الاسم

لاستخدام الكود داخل مساحة اسم، ضع بادئة لاسم مساحة الاسم متبوعة بنقطة واسم العضو. تأكد من أن مساحة الاسم متاحة في النطاق الذي يتم استخدامها فيه.

// app.ts

/// <reference path="mathUtils.ts" /> 

const sum = MathUtils.add(5, 3);
const difference = MathUtils.subtract(5, 3);

console.log(`Sum: ${sum}`);
console.log(`Difference: ${difference}`);

في هذا المثال، يتم الإشارة إلى مساحة اسم MathUtils باستخدام توجيه الشرطة الثلاثية '<reference path="mathUtils.ts" />'، مما يسمح بالوصول إلى وظائفها في الملف app.ts.

المساحات الاسمية المتداخلة

يمكن تضمين مساحات الأسماء داخل مساحات أسماء أخرى، مما يساعد في تنظيم التعليمات البرمجية بشكل أكبر. يمكن الوصول إلى مساحات الأسماء المتداخلة عن طريق ربط أسماء مساحات الأسماء بالنقاط.

// shapes.ts

namespace Shapes {
  export namespace Circle {
    export function area(radius: number): number {
      return Math.PI * radius * radius;
    }
  }

  export namespace Square {
    export function area(side: number): number {
      return side * side;
    }
  }
}

في هذا المثال، تحتوي مساحة الاسم Shapes على مساحتي اسم متداخلتين: Circle وSquare، ولكل منهما دالة area خاصة بها.

استخدام مساحات الأسماء المتداخلة

للوصول إلى أعضاء مساحات الأسماء المتداخلة، استخدم تدوين النقاط لتسلسل أسماء مساحات الأسماء.

// app.ts

/// <reference path="shapes.ts" /> 

const circleArea = Shapes.Circle.area(5);
const squareArea = Shapes.Square.area(4);

console.log(`Circle Area: ${circleArea}`);
console.log(`Square Area: ${squareArea}`);

في هذا المثال، يتم الوصول إلى مساحات الأسماء Circle وSquare من خلال مساحة الأسماء Shapes، مما يوضح كيفية الاستفادة من مساحات الأسماء المتداخلة.

خاتمة

تُعد مساحات الأسماء في TypeScript أداة فعّالة لتنظيم وإدارة التعليمات البرمجية. وباستخدام مساحات الأسماء، يمكن تجميع التعليمات البرمجية منطقيًا، مما يقلل من خطر تعارضات الأسماء ويحسن قابلية الصيانة. إن فهم كيفية إنشاء واستخدام مساحات الأسماء، بما في ذلك مساحات الأسماء المتداخلة، أمر ضروري لتطوير TypeScript بشكل فعّال.