يصل TypeScript 7 مزودًا بميزة «isolated declarations»، وهو وضع للمترجم (compiler mode) يتيح للمستودعات الكبيرة أحادية النوع (monorepos) تجميع الملفات بالتوازي، مما يسرع حلقات التغذية الراجعة للمطورين.
لماذا تكتسب ميزة isolated declarations أهمية الآن
حتى هذا الإصدار، كان مترجم TypeScript يعالج ملفات الإعلان (.d.ts) عبر مسار تنفيذ واحد (single thread). وفي قواعد الأكواد التي تضم مئات الحزم، كانت هذه الخطوة غالبًا ما تعيق مسار البناء (build pipeline) بأكمله. ومن خلال تقسيم عمل التحقق من الأنواع (type-checking) عبر أنوية المعالج، تساهم ميزة isolated declarations في تقليص أوقات البناء للفرق التي تحتفظ بجميع مكتباتها في مستودع واحد.
يظهر التأثير فورًا لأي مؤسسة تقوم بتشغيل مهام التكامل المستمر (CI) أو تحتاج إلى عمليات إعادة بناء محلية سريعة.
الطريق نحو التحقق المتوازي من الأنواع
أضافت Microsoft ميزة التجميع التدريجي (incremental compilation) منذ سنوات، لكن مرحلة الإعلان ظلت متسلسلة لأن الملفات كانت تعتمد على بعضها البعض. ومع نمو المستودعات أحادية النوع (monorepos)، أصبح المسار أحادي المسار (single-threaded) يمثل عنق زجاجة مكلفًا. تكسر ميزة isolated declarations سلسلة التبعية، حيث تعامل الواجهة العامة لكل ملف كوحدة مستقلة وتتحقق منها في آن واحد.
من المستفيد، ومن قد لا يستفيد
- فرق التطوير التي تمتلك مستودعات monorepos كبيرة – ستشهد أكبر انخفاض في أوقات البناء، خاصة على وكلاء CI المزودين بأنوية معالجة متعددة.
- المشاريع الصغيرة أو التطبيقات ذات الحزمة الواحدة – قد لا يلاحظون سوى تحسن طفيف لأن خطوة الإعلان تستهلك بالفعل جزءًا ضئيلًا من إجمالي وقت التجميع.
- الفرق التي تعمل على أجهزة محدودة الموارد – ستحصل على نفس التحسن الهامشي لنفس السبب.
التحديثات الأوسع في TypeScript 7
تأتي ميزة isolated declarations مع مجموعة من التحديثات التي تركز على الأمان:
- تحسينات الوضع الصارم (Strict mode) – تحذيرات جديدة مثل
strictIndexSignaturesتنبه عند وصول الكود إلى مفتاح كائن قد يكون مفقودًا. - عناصر الـ tuple المسماة – يمكن للمطورين تسمية مواضع الـ tuple، مما يجعل توقيعات الـ API ذاتية التوثيق.
- تحسين عامل
satisfies– التعامل الأفضل مع الأنواع العامة (generics) المعقدة يحسن استنتاج الأنواع دون التضحية بقابلية القراءة. - نشر سياق العمليات غير المتزامنة (Async context propagation) – يدعم واجهة برمجة تطبيقات AsyncContext تتبع مكدسات الاستدعاء غير المتزامنة (asynchronous call stacks).
- بيانات المزيّنات الوصفية (Decorator metadata) – يسمح مقترح TC39 لكود وقت التشغيل بفحص مزيّنات الفئات (class decorations).
- توضيحات التباين الصريحة (Explicit variance annotations) – استخدام
+أو-على المعلمات العامة يشير إلى التغاير المشترك (covariance) أو التغاير المعاكس (contravariance)، مما يزيد من دقة مدقق الأنواع.
تعزز هذه الإضافات سمعة TypeScript كلغة تعتمد على "الأنواع أولاً" (type-first)، ولكن ميزة isolated declarations هي الميزة الوحيدة التي تعالج مباشرة نقطة ألم تتزايد مع حجم قاعدة الكود.
ما الذي يجب مراقبته لاحقًا
الخلاصة
تمنح ميزة isolated declarations الفرق التي تعتمد بكثافة على الـ monorepos عمليات بناء أسرع. وبالنسبة للمؤسسات التي تدفع مقابل دقائق الـ CI أو تعاني من بطء عمليات إعادة البناء المحلية، فإن الترقية إلى TypeScript 7 هي خطوة منخفضة المخاطر تترجم إلى توفير ملموس في الوقت والتكلفة. تضيف بقية التحديثات شبكات أمان مفيدة، ولكن محرك التحقق المتوازي من الأنواع هو الميزة الرئيسية التي تجيب مباشرة على تحدي القابلية للتوسع في تطوير JavaScript الحديث.
