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

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

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

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

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

إذا كنت جديدًا على TypeScript، يمكنك الاطّلاع على مقالة TypeScript في 5 دقائق.

تهيئة مشروع جديد باستخدام TypeScriptCloud Functions

نفِّذ الأمر 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 حالي، يمكنك إضافة خطاف predeploy للتأكّد من تحويل مشروعك في كل مرة تنشر فيها الرمز إلى Cloud Functions for Firebase. ستحتاج إلى ملف tsconfig.json منسّق بشكلٍ صحيح ومشروع على Firebase، وعليك إجراء التعديلات التالية على إعدادات Firebase:

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

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

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

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

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

إذا كان لديك مشروع Cloud Functions حالي قمت بتهيئته وتطويره في JavaScript، يمكنك نقله إلى 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 محليًا، يمكنك استخدام أدوات المحاكاة الموضّحة في تشغيل الدوال محليًا. من المهم تجميع الرمز قبل استخدام هذه الأدوات، لذا احرص على تنفيذ الأمر npm run build داخل دليل الدوال قبل تنفيذ firebase emulators:start أو firebase functions:shell. بدلاً من ذلك، يمكنك تنفيذ npm run serve أو npm run shell كاختصار، حيث ينفّذ هذان الأمران عملية الإنشاء ويشغّلان واجهة سطر الأوامر للدوال.

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

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