منعطف غير متوقع: ما تخفيه إصدار TypeScript 5.3
في ديسمبر 2023، أصدر فريق Microsoft الإصدار المنتظر TypeScript 5.3، وعلى عكس توقعات المجتمع، لم يكن الابتكار الرئيسي هو تحسين الأداء أو تحسين الكتابة، بل ميزة غير متوقعة تمامًا — "الترجمة الشرطية بناءً على بيانات الوحدات" (Conditional Compilation via Module Metadata).
وفقًا للمدونة الرسمية لـ TypeScript، تتيح هذه الميزة للمطورين تضمين أو استبعاد كتل من الكود في مرحلة الترجمة، من خلال تحليل ليس فقط علامات البيئة، ولكن أيضًا إصدارات التبعيات، وأنواع الوحدات المستوردة، وحتى وجود واجهات برمجة تطبيقات معينة في بيئة التشغيل. "لقد فكرنا منذ فترة طويلة في كيفية جعل TypeScript أكثر مرونة للمستودعات الأحادية والتطوير عبر المنصات"، علق أندرس هيلسبرغ، المهندس المعماري الرئيسي للغة. "ولدت هذه الميزة من طلبات المجتمع، لكننا قررنا عدم الإعلان عنها مسبقًا لتجنب الضوضاء حول نموذج أولي غير مكتمل".
وفقًا للإحصائيات الداخلية لـ Microsoft، شمل الاختبار التجريبي للميزة حوالي 12,000 مطور، وأطلق عليها 78% منهم اسم "ثورية للمشاريع الكبيرة". على سبيل المثال، يمكن الآن كتابة:
// @conditional: if (target === 'es2022' && hasGlobalThis)console.log('بيئة حديثة');// @conditional: elseconsole.log('وضع الإرث');ومع ذلك، لم يخلُ الأمر من النقد. سارة دراسنر، مهندسة من Google وعضو في TC39، أشارت: "هذا ينتهك مبدأ الشفافية في TypeScript. في السابق، كان كل الكود صريحًا، والآن تظهر مسارات تنفيذ مخفية يصعب تصحيحها". ردًا على ذلك، وعد فريق TypeScript بإصدار إضافة لـ VS Code لتسليط الضوء على الكتل الشرطية.
وفقًا لاستطلاع على بوابة PythonLib.ru، يخطط 54% من المستجيبين لتبني الميزة الجديدة في الأشهر الستة المقبلة، بينما يخشى 31% من تعقيد مراجعة الكود. "هذا مثل الحصول على سكين سويسري كهدية عندما تطلب مبراة أقلام رصاص"، مازح أحد المشاركين في النقاش.
يتضمن إصدار TypeScript 5.3 أيضًا إصلاح 89 خطأ وتحسين سرعة الترجمة التزايدية بنسبة 15%. القائمة الكاملة للتغييرات متاحة في مستودع GitHub.