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

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

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

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

  • تتوافق TypeScript مع أحدث ميزات JavaScript، مثل عدم المزامنة أو الانتظار، ما يسهّل إدارة الوعود.
  • تُبرز دالة 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، يمكنك نقله إلى 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 كاختصار، حيث تعمل هذه الأوامر على تشغيل عملية الإنشاء وتنفيذ أو بدء الدوال Shell.

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

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