استخدام TypeScript لوظائف السحابة الإلكترونية

بالنسبة إلى المطوّرين الذين يفضّلون كتابة الدوالّ في TypeScript، Cloud Functions يوفّر نوعَين من الدعم:

  • إنشاء مشاريع TypeScript وضبطها للترجمة التلقائية عند بدء التشغيل (firebase init functions)
  • ترجمة مصدر TypeScript الحالي إلى JavaScript في وقت النشر من خلال خطاف ما قبل النشر

باتّباع التعليمات الواردة في هذا الدليل، يمكنك نقل ملف IDE JavaScript حالي إلى TypeScript ومواصلة نشر الدوال باستخدام ملف IDE predeploy hook لتحويل رمز المصدر. توفّر TypeScript العديد من المزايا مقارنةً بلغة JavaScript العادية عند كتابة الدوالّ:

  • تتوافق TypeScript مع أحدث ميزات JavaScript، مثل async/await، ما يسهّل إدارة الوعود.
  • يُبرز مدقّق الأخطاء في Cloud Functions المشاكل الشائعة أثناء كتابة الرموز البرمجية.
  • تساعدك سلامة النوع في تجنُّب أخطاء وقت التشغيل في الدوالّ المنشورة.

إذا كنت حديث العهد باستخدام TypeScript، اطّلِع على TypeScript في 5 دقائق.

بدء مشروع Cloud Functions جديد باستخدام TypeScript

تشغيل firebase init functions في دليل جديد تمنحك الأداة خيارات لإنشاء المشروع باستخدام JavaScript أو TypeScript. اختَر TypeScript لإخراج ملف ملف برمجي يتضمن بنية المشروع التالية:

myproject
 +- functions/     # Directory containing all your functions code
      |
      +- package.json  # npm package file describing your Cloud Functions code
      |
      +- tsconfig.json
      |
      +- .eslintrc.js # Optional file if you enabled ESLint
      +- tsconfig.dev.json # Optional file that references .eslintrc.js
      |
      +- src/     # Directory containing TypeScript source
      |   |
      |   +- index.ts  # main source file for your Cloud Functions code
      |
      +- lib/
          |
          +- index.js  # Built/transpiled JavaScript code
          |
          +- index.js.map # Source map for debugging

بعد اكتمال عملية الإعداد، أزِل التعليقات من العيّنة في index.ts وشغِّل npm run serve للاطّلاع على دالة "Hello World" قيد التنفيذ.

استخدام مشروع TypeScript حالي

إذا كان لديك مشروع TypeScript حالي، يمكنك إضافة أداة ربط ما قبل النشر لمحاولة تحويل مشروعك إلى رمز برمجي قابل للتنفيذ في كل مرة تنشر فيها الرمز إلىCloud Functions for Firebase. ستحتاج إلى ملف tsconfig.json منسَّق بشكل صحيح ومشروع على Firebase، وسيكون عليك إجراء التعديلات التالية على إعدادات Firebase:

  1. عدِّل package.json لإضافة نص برمجي bash لإنشاء مشروع TypeScript. على سبيل المثال:

     {
       "name": "functions",
       "scripts": {
         "build": "npm run lint && tsc"
       }
     ...
    
  2. عدِّل firebase.json لإضافة ربط ما قبل النشر لتشغيل نص إنشاء البرنامج. على سبيل المثال:

     {
       "functions": {
         "predeploy": "npm --prefix functions run build",
       }
     }
    

باستخدام هذه الإعدادات، ينشئ الأمر firebase deploy --only functions رمز TypeScript وينشره كدوالّ.

نقل مشروع JavaScript حالي إلى TypeScript

إذا كان لديك مشروع Cloud Functions حالي أنشأته وطوّرته باستخدام JavaScript، يمكنك نقله إلى IDE TypeScript. ننصحك بشدة بإنشاء نقطة تفتيش في git أو ملف احتياطي آخر قبل البدء.

لنقل بيانات مشروع JavaScript Cloud Functions حالي:

  1. أنشئ نقطة تفتيش في git واحفظ نُسخًا من ملفات JavaScript المصدر الحالية.
  2. في دليل المشروع، شغِّل firebase init functions واختَر TypeScript عندما يُطلب منك اختيار لغة لكتابة الدوالّ.
  3. عندما يُطلب منك تحديد ما إذا كنت تريد استبدال ملف package.json الحالي، انقر على لا ما لم تكن متأكدًا من أنّك لا تريد الاحتفاظ بالملف الحالي.
  4. حذف index.ts في الدليل functions/src واستبداله برمز المصدر الحالي
  5. في ملف tsconfig.json الذي تم إنشاؤه عند بدء التشغيل، اضبط خيارات المُحوِّل البرمجي للسماح بتشغيل JavaScript: "allowJs": true.
  6. انسخ ملف package.json المحفوظ إلى دليل functions، وعدِّله لضبط "main" على "lib/index.js".
  7. في package.json أيضًا، أضِف نصًا برمجيًا لإنشاء TypeScript على النحو التالي:

     {
       "name": "functions",
       "scripts": {
         "build": "npm run lint && tsc"
       }
     ...
    
  8. أضِف "typescript" كتبعية مطوّر من خلال تشغيل npm install --save-dev typescript @typescript-eslint/eslint-plugin @typescript-eslint/parser.

  9. بالنسبة إلى جميع التبعيات، يمكنك تشغيل npm install --save @types/<dependency>.

  10. أعِد كتابة رمز المصدر من js .إلى ts .حسب الرغبة.

محاكاة دوال TypeScript

لاختبار دوال TypeScript محليًا، يمكنك استخدام أدوات المحاكاة الموضّحة في مقالة تشغيل الدوالّ محليًا. من المهم compiling رمزك البرمجي قبل استخدام هذه الأدوات، لذا احرص على تشغيل npm run build داخل دليل الدوالّ قبل تشغيل firebase emulators:start أو firebase functions:shell. بدلاً من ذلك، يمكنك تشغيل npm run serve أو npm run shell كاختصار، حيث يؤدي كلا الأمرَين إلى تشغيل عملية الإنشاء وعرض/بدء shell الدوال.

سجلّات Functions لمشاريع TypeScript

أثناء عملية firebase deploy، يتم تحويل index.ts مشروعك إلى index.js، ما يعني أنّ سجلّ Cloud Functions سيعرض أرقام الأسطر منملف index.js وليس الرمز الذي كتبته. لتسهيل العثور على المسارات وأرقام الأسطر المقابلة في index.ts، firebase deploy ينشئ functions/lib/index.js.map. يمكنك استخدام ملف ملف تخطيط المصدر هذا في بيئة تطوير البرامج المفضّلة لديك أو من خلال وحدة عقدة.