يُقترح إضافة بناء جملة مع معلومات الكتابة إلى لغة JavaScript

اتخذت Microsoft وIgalia وBloomberg زمام المبادرة لتضمين بناء الجملة في مواصفات JavaScript لتعريفات النوع الصريحة، على غرار بناء الجملة المستخدم في لغة TypeScript. حاليًا، يتم تقديم تغييرات النموذج الأولي المقترحة لإدراجها في معيار ECMAScript للمناقشات الأولية (المرحلة 0). وفي الاجتماع القادم للجنة TC39 في مارس، من المخطط الانتقال إلى المرحلة الأولى من النظر في الاقتراح بمشاركة مجتمع الخبراء من ECMA.

إن الحصول على معلومات النوع المحددة بوضوح سيسمح لك بتجنب العديد من الأخطاء أثناء عملية التطوير، ويجعل من الممكن استخدام تقنيات التحسين الإضافية، وتبسيط تصحيح الأخطاء، وجعل التعليمات البرمجية أكثر قابلية للقراءة وأسهل للتعديل والدعم من قبل مطوري الطرف الثالث. يُقترح تنفيذ دعم الكتابة كميزة اختيارية - ستتجاهل محركات JavaScript وأوقات التشغيل التي لا تدعم التحقق من النوع التعليقات التوضيحية التي تحتوي على معلومات النوع وتعالج التعليمات البرمجية كما كان من قبل، مع التعامل مع بيانات النوع كتعليقات. لكن أدوات التحقق من الكتابة ستكون قادرة على استخدام المعلومات المتاحة لتحديد الأخطاء المرتبطة بالاستخدام غير الصحيح للأنواع.

علاوة على ذلك، على عكس معلومات النوع المحددة باستخدام تعليقات JSDoc المحددة في شكل تعليقات، فإن الإشارة المباشرة للأنواع مباشرة في بنيات تعريف متغيرة ستجعل الكود أكثر وضوحًا وفهمًا وأسهل في التحرير. على سبيل المثال، ستتمكن بيئة التطوير المتكاملة التي تدعم TypeScript من تمييز الأخطاء فورًا في كود JavaScript المكتوب دون تحويلات إضافية. بالإضافة إلى ذلك، سيتيح دعم الكتابة المدمج إمكانية تشغيل البرامج المكتوبة بلهجات JavaScript المكتوبة، مثل TypeScript وFlow، دون النقل من لغة إلى أخرى.

يُقترح إضافة بناء جملة مع معلومات الكتابة إلى لغة JavaScript

من بين الأنواع، يُقترح إضافة "سلسلة" و"رقم" و"منطقي"، والتي يمكن استخدامها عند تحديد المتغيرات ومعلمات الوظيفة وعناصر الكائن وحقول الفئة والمصفوفات المكتوبة ("الرقم []"). يُقترح أيضًا تقديم الدعم للأنواع المدمجة ("سلسلة | رقم") والأدوية العامة. دع x: سلسلة؛ إضافة الوظيفة (أ: رقم، ب: رقم) {إرجاع أ + ب؛ } واجهة الشخص { الاسم: سلسلة؛ العمر:الرقم؛ } الدالة foo (س: تي) { إرجاع س؛ } الدالة foo(x: سلسلة | رقم): سلسلة | الرقم {إذا (نوع x === رقم) {return x + 1} else {return x + "!" } }

المصدر: opennet.ru

إضافة تعليق