0Pricing
TypeScript Academy · درس

مساحات الأسماء أم الوحدات: الاستخدام الحديث

افهموا سبب تفضيل الوحدات على مساحات الأسماء

مساحات الأسماء أم الوحدات: الاستخدام الحديث درس مجاني في TypeScript Academy على CoddyKit. هذا هو الدرس 4 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في TypeScript Academy، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة TypeScript Academy 4 دروس في المجموع.

مرحبًا

استخدمت TypeScript في الأصل مساحات الأسماء (وكانت تُسمّى سابقًا «الوحدات الداخلية») لتنظيم الشيفرة. أما TypeScript الحديثة فتستخدم وحدات ES بدلًا منها. يوضّح هذا الدرس متى يكون استخدام كل منها مناسبًا.

ما مساحة الأسماء

مساحة الأسماء هي طريقة خاصة بـ TypeScript لتجميع الشيفرة ذات الصلة ضمن نطاق مُسمّى باستخدام الكلمة المفتاحية `namespace`.
namespace Geometry {
  export interface Point { x: number; y: number; }
  export function distance(a: Point, b: Point): number {
    return Math.sqrt((a.x - b.x) ** 2 + (a.y - b.y) ** 2);
  }
}

الوصول إلى أعضاء مساحة الأسماء

يمكن الوصول إلى أعضاء مساحة الأسماء عبر اسم مساحة الأسماء باستخدام الصيغة النقطية.
const p1: Geometry.Point = { x: 0, y: 0 };
const p2: Geometry.Point = { x: 3, y: 4 };
const d = Geometry.distance(p1, p2); // 5

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

يمكن تداخل مساحات الأسماء.
namespace App {
  export namespace Models {
    export interface User { name: string; }
  }
}
const u: App.Models.User = { name: 'Alice' };

دمج مساحات الأسماء

تدعم مساحات الأسماء دمج التصريحات — إذ تُدمج تصريحات مساحتي أسماء تحملان الاسم نفسه.
namespace Validation {
  export function validate(s: string): boolean { return s.length > 0; }
}
namespace Validation {
  export function sanitize(s: string): string { return s.trim(); }
}

لماذا يُفضَّل استخدام الوحدات

وحدات ES هي المعيار في JavaScript. وتدعمها جميع أدوات التجميع، كما تُزال منها الشيفرة غير المستخدمة بكفاءة، وتعمل مباشرةً في المتصفحات الحديثة وNode.js.

المكافئ الوحداتي لمساحة الأسماء

في TypeScript الحديثة، تصبح مساحة الأسماء مجرد ملف. صدّروا ما تريدون إتاحته للعامة، وأبقوا الباقي خاصًا.
// geometry.ts
export interface Point { x: number; y: number; }
export function distance(a: Point, b: Point): number {
  return Math.sqrt((a.x - b.x) ** 2 + (a.y - b.y) ** 2);
}

ما زالت مساحات الأسماء مستخدمة في ملفات التصريحات

ما زالت مساحات الأسماء مستخدمة على نطاق واسع في ملفات التصريحات .d.ts للمكتبات العامة (مثل أنواع DOM وأنواع Node.js)، لأنها توسّع النطاق العام.
// node.d.ts
declare namespace NodeJS {
  interface ProcessEnv { NODE_ENV?: 'development' | 'production'; }
}

مراجع الشرطة المائلة الثلاثية (قديمة)

قبل ظهور وحدات ES، كانت توجيهات الشرطة المائلة الثلاثية تشير إلى ملفات أخرى. أما اليوم، فتحل محلها إعدادات includes في tsconfig واستيرادات الوحدات.
/// <reference types="node" />
/// <reference path="./other.d.ts" />

متى نستخدم مساحات الأسماء رغم ذلك

استخدموا مساحات الأسماء: (1) في ملفات التصريحات للأنواع العامة المضمَّنة، (2) عند توسيع مساحات الأسماء العامة الموجودة في المكتبات.

الترحيل من مساحات الأسماء إلى الوحدات

استبدلوا `namespace Foo {}` بملف وحدة. واستبدلوا `/// ` بالاستيرادات. وقد وثّق فريق TypeScript مسار الترحيل هذا.

تحقّق سريع

في TypeScript الحديثة، ما البديل الموصى به لمساحات الأسماء؟

مراجعة

تنظّم مساحات الأسماء الشيفرة ضمن نطاق مُسمّى، لكنها تُعد قديمة في TypeScript الحديثة. استخدموا وحدات ES (import/export) في شيفرة التطبيقات. وتظل مساحات الأسماء مفيدة في ملفات التصريحات لتوسيع الأنواع العامة.

الأسئلة الشائعة

هل درس «مساحات الأسماء أم الوحدات: الاستخدام الحديث» مجاني؟

نعم — نص درس «مساحات الأسماء أم الوحدات: الاستخدام الحديث» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة TypeScript Academy، انتقل إلى CoddyKit PRO. تتضمن دورة TypeScript Academy 4 دروس في المجموع.

ماذا ستتعلم في «مساحات الأسماء أم الوحدات: الاستخدام الحديث»؟

افهموا سبب تفضيل الوحدات على مساحات الأسماء تتمرن على TypeScript Academy مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.

هل أحتاج إلى خبرة سابقة لأبدأ TypeScript Academy؟

لا تُشترط خبرة سابقة. TypeScript Academy على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 4 من أصل 4.

كم من الوقت يستغرق درس «مساحات الأسماء أم الوحدات: الاستخدام الحديث»؟

معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.

هل يمكنني كتابة وتشغيل أكواد في درس TypeScript Academy هذا؟

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

جميع الدروس في هذه الدورة

  1. صياغة وحدات ES: ‏import وexport
  2. إعادة التصدير وملفات Barrel
  3. الاستيرادات والتصديرات الخاصة بالأنواع فقط
  4. مساحات الأسماء أم الوحدات: الاستخدام الحديث
← العودة إلى TypeScript Academy