AzLearn

حدود الوحدات

Module Boundaries

مفهوم ~20 دقيقة

حدود الوحدات — Module Boundaries

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

ابدأ بتحديد public API لكل module. ما الذي يحتاجه الخارج؟ وما الذي يجب أن يبقى داخلياً؟ الأنواع العامة يجب أن تكون مستقرة قدر الإمكان، لأن تغييرها يكسر المستهلكين.

مثال حد صغير

index.ts

في ملف حقيقي، internalRate لا يصدّر لأنه تفصيل داخلي.

الأنواع الاسمية — Branded Types

export type Money = { halalas: number } يمنع بعض الأخطاء لكن يسمح بتمرير رقم رياليات كـ هللات لأن TypeScript يعمل بالتوافق الهيكلي. الحل هو branded types:

index.ts

unique symbol يضمن أن Halalas وRiyals لا يتبادلان حتى لو كلاهما number. المشروع الإنتاجي يصنع دالة بناء واحدة (toHalalas) ولا يُصدر as Halalas مباشرة من خارج الحد.

لا تصدّر types مؤقتة

إذا كان النوع يخدم تنفيذ دالة واحدة، اتركه داخلياً. public types هي عقود.

تحدي — Challenge