TypeScript 6.0 أصبح هنا
يُعد TypeScript 6.0 علامة فارقة كبرى؛ فهو الإصدار الأخير المبني على قاعدة أكواد JavaScript. أما الإصدار القادم، 7.0، فسينتقل إلى مترجم (compiler) يعتمد على لغة Go.
هذا التحول مهم لمشروعك. إذا انتظرت طويلاً قبل الترقية، فستواجه عمليتي انتقال متتاليتين.
New Features You Should Use
• الكلمة المفتاحية using: تقوم هذه الكلمة بإدارة الموارد مثل اتصالات قواعد البيانات أو مقابض الملفات (file handles). فهي تقوم بتنظيف الذاكرة تلقائياً، ولن تحتاج بعد الآن إلى كتل finally إضافية لمنع تسرب الذاكرة.
• استنتاج أفضل للأساليب (method inference): يمكنك التوقف عن كتابة تعليقات النوع (type annotations) الصريحة للـ fluent APIs. أصبح TypeScript الآن يتولى التعامل مع السياق نيابة عنك.
• تحسينات الـ variadic tuple: يمكنك الآن نشر الأنواع (spread types) في أي موضع داخل الـ tuple. وهذا يجعل كتابة أنماط الدوال المعقدة أسهل بكثير.
Performance Gains
الإصدار الجديد أسرع. تشهد المشاريع الكبيرة عمليات إعادة بناء (rebuilds) أسرع بنسبة تصل إلى 40%. يستخدم المترجم الآن تتبعاً أذكى للتبعيات (dependency tracking)؛ حيث يعيد التجميع فقط عند تغيير التوقيع (signature)، وليس فقط عند تغيير جسم الدالة (function body).
Breaking Changes to Watch
• دمج مساحات الأسماء (Namespace merging): يجب عليك استخدام عمليات تصدير (exports) صريحة عند دمج مساحات الأسماء مع الفئات (classes).
• تواقيع فهرس (index signatures) أكثر صرامة: لم يعد بإمكانك الوصول إلى خصائص عشوائية في الكائن. وهذا يمنع الأخطاء الناتجة عن افتراض وجود خاصية ما بينما هي غير موجودة.
• الإعدادات الافتراضية للوضع الصارم (Strict mode): أصبح العلم noUncheckedIndexedAccess مفعلاً بشكل افتراضي. يجب عليك التحقق مما إذا كانت عناصر المصفوفة هي null أو undefined.
Migration Strategy
لا داعي للذعر إذا رأيت الكثير من الأخطاء. اتبع هذه الخطوات:
- قم بتشغيل المترجم باستخدام العلم
noEmitلرؤية جميع الأخطاء أولاً. - استخدم الـ codemods الرسمية لإصلاح تواقيع الفهرس وفحوصات الـ
nullتلقائياً. - قم بإصلاح مشكلات مساحات الأسماء يدوياً.
- تحقق من مجلد
node_modulesالخاص بك. قد لا تدعم بعض المكتبات الإصدار 6.0 بعد.
سيؤدي الانتقال إلى مترجم Go في الإصدار 7.0 إلى تسريع فحص الأنواع بمقدار 10 أضعاف. ابدأ بالانتقال إلى الإصدار 6.0 الآن لتجهيز قاعدة الأكواد الخاصة بك للمستقبل.