كيف يحسن نظام الكتابة كود JavaScript الخاص بك

لذلك ليس لديك وقت للتنقل فيه ، والشهر يسعى بالفعل لإكماله. تبقى بضعة أيام حتى يتم إطلاق سلسلة رسائل جديدة في الدورة التدريبية "JavaScript Developer" ، وفقًا للتقاليد ، قبل البدء في الدورة التدريبية سنشارك معك ترجمة المواد المفيدة.

جافا سكريبت الفانيليا لا تطبعها الطبيعة. يمكنك حتى تسميته "ذكي" ، لأنه قادر على حساب ما هو الرقم وما هي السلسلة.

يعمل ذلك على تسهيل تشغيل تعليمات JavaScript البرمجية في مستعرض أو عند تشغيل Node.js. ومع ذلك ، فهي عرضة لأخطاء وقت التشغيل العديدة (وقت التشغيل) ، والتي يمكن أن تدمر تجربة المستخدم الخاصة بك.



إذا حدث لك ما سيتم وصفه لاحقًا ، فستكسب فقط إذا كنت تستخدم نظام الكتابة.

  • بعد تلقي قائمة من البيانات ، ستجد أن هناك حقلًا معينًا غير موجود في أحد السجلات. هذا يؤدي إلى خلل في التطبيق إذا لم يتم اكتشاف هذه الحالة ولم تتم معالجتها بشكل صريح.
  • لا يحتوي مثيل الفئة التي قمت باستيرادها على الطريقة التي تحاول الاتصال بها.
  • لا يعرف IDE الخاص بك الأساليب والخصائص المتاحة للوحدات النمطية والمكتبات ، لذلك لا يمكنه تقديم الإكمال التلقائي بكفاءة.

التدفق ، TypeScript أو ReasonML

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

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

ومع ذلك ، لا يوفر Flow و TypeScript أمانًا بنسبة 100٪ عند إضافة كتابة التعليمات البرمجية.
لهذا السبب ، يتم تحقيق أمان الكتابة المثالي من خلال الاستدلال ويجعل تعليق التعليقات التوضيحية وتوقيعات الوظيفة أسهل.

أمثلة بسيطة ومفتعلة بوضوح

النظر في التعليمات البرمجية التالية:

let add = (a, b) => a + b; 

في JavaScript العادية ، يمكن أن تكون هذه الوسائط أرقامًا أو سلاسل. في TypeScript أو Flow ، يمكن شرح هذه الوسيطات على النحو التالي:

 let add = (a: number, b: number) => a + b 

الآن نحن على ما يبدو وضع بالضبط قيمتين كثافة العمليات. ليس هناك عومتان أو سلسلتان ، يتم استخدام مشغلين آخرين لعمليات الإضافة الخاصة بهم.

الآن دعونا نلقي نظرة على مثال تم تعديله قليلاً في السبب:

 let add = (a: string, b: number) => a + b add('some string', 5) // outputs: "some string5" 

هذه الميزة تعمل! وهذا قد يبدو مفاجئا. كيف يفهم هذا السبب؟

 let add = (a, b) => a + b; add("some string", 5); /* This has type: string but somewhere wanted: int */ 

هذه الميزة بها عيوب على مستوى التنفيذ. السبب لديه عوامل مختلفة لإضافة int ، تعويم وسلسلة.

الغرض من هذا المثال البسيط هو إظهار أنه من الممكن وجود "أخطاء كتابة" إضافية حتى لو لم يسقط هذا التطبيق.

في برنامج Reason ، لا يتعين على المطورين التعامل مع أخطاء الإنتاج التي تنشأ بسبب عدم توافق الأنواع أو القيم الخالية.

تجربة المطور

واحدة من أجمل الميزات في TypeScript هي أن ترى اقتراحات للتحسين أو الإكمال التلقائي في محرر الشفرة.

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

هذه هي الطريقة التي تعمل بها في VSCode ، لكنني أعرف الكثير من مطوري السبب الذين يستخدمون vim. هنا لن نذهب إلى المقارنات.

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

السبب ، من ناحية أخرى ، يصعب استخدامه بسبب توفر عدد أقل من المقالات والوثائق. آمل أنه مع تطوره سيتم تصحيح هذا.

إذا كنت مهتمًا بالعقل ، يمكنك العثور على الوثائق الخاصة به هنا . وتابع أشخاصًا مثل @ jordwalke و @ jaredforsyth و sgrove على Twitter. يمكنهم معرفة الكثير عن النظام البيئي Reason / OCaml.

إذا كنت تريد معرفة كيفية عمل Reason مع GraphQL ، فراجع مقالتي الأخرى ، "Reason with GraphQL ، مستقبل تطبيقات الويب الآمنة من النوع" .

نحن في انتظار تلقي تعليقات على المواد ، ووفقًا للتقاليد المعمول بها ، ندعو جميع القراء إلى يوم مفتوح ، والذي سيعقد في 25 مارس من قبل مدرسنا ، الكسندر كورزيكوف .

Source: https://habr.com/ru/post/ar444576/


All Articles