Catch up on everthing we announced at this year's Firebase Summit. Learn more

Sử dụng TypeScript cho các chức năng đám mây

Đối với các nhà phát triển thích viết các hàm trong TypeScript, Cloud Functions cung cấp hai loại hỗ trợ:

  • Tạo và dự án configure nguyên cảo cho transpilation tự động lúc khởi tạo ( firebase init functions ).
  • Transpile hiện nguồn typescript để Javascript lúc triển khai thông qua một móc predeploy .

Làm theo hướng dẫn trong hướng dẫn này, bạn có thể di chuyển một dự án JavaScript hiện có sang TypeScript và tiếp tục triển khai các chức năng bằng cách sử dụng móc triển khai trước để chuyển mã nguồn của bạn. TypeScript cung cấp nhiều lợi ích hơn JavaScript vani khi viết các hàm:

  • TypeScript hỗ trợ các tính năng JavaScript mới nhất như async / await, đơn giản hóa việc quản lý lời hứa
  • Một trình kết nối Chức năng đám mây nêu bật các sự cố thường gặp khi bạn viết mã
  • Nhập an toàn giúp bạn tránh lỗi thời gian chạy trong các chức năng đã triển khai

Nếu bạn là người mới đến nguyên cảo, xem nguyên cảo trong vòng 5 phút .

Khởi tạo dự án Chức năng đám mây mới với TypeScript

Run firebase init functions trong một thư mục mới. Công cụ cung cấp cho bạn các tùy chọn để xây dựng dự án bằng JavaScript hoặc TypeScript. Chọn nguyên cảo để sản xuất các cấu trúc dự án sau:

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

Khi khởi tạo hoàn tất, bỏ ghi chú các mẫu trong index.ts và chạy npm run serve để xem một "Hello World" chức năng trong hành động.

Sử dụng một dự án TypeScript hiện có

Nếu bạn có một dự án TypeScript hiện tại, bạn có thể thêm một hook trước khi triển khai để đảm bảo rằng dự án của bạn được chuyển mỗi khi bạn triển khai mã của mình cho Cloud Functions cho Firebase. Bạn sẽ cần một hình thành đúng tsconfig.json tập tin và một dự án căn cứ hỏa lực, và bạn sẽ cần phải thực hiện những sửa đổi sau đây để cấu hình căn cứ hỏa lực của bạn:

  1. Sửa package.json để thêm một kịch bản bash để xây dựng dự án nguyên cảo của bạn. Ví dụ:

     {
       "name": "functions",
       "scripts": {
         "build": "npm run lint && tsc"
       }
     ...
    
  2. Sửa firebase.json để thêm một cái móc predeploy để chạy các xây dựng kịch bản. Ví dụ:

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

Với cấu hình này, một firebase deploy --only functions lệnh xây dựng đang đánh máy của bạn và triển khai nó như chức năng.

Di chuyển một dự án JavaScript hiện có sang TypeScript

Nếu bạn có một dự án Chức năng đám mây hiện tại mà bạn đã khởi tạo và phát triển bằng JavaScript, bạn có thể chuyển nó sang TypeScript. Chúng tôi rất khuyến khích bạn tạo một trạm kiểm soát git hoặc một bản sao lưu khác trước khi bắt đầu.

Để di chuyển một dự án JavaScript Cloud Functions hiện có:

  1. Tạo một trạm kiểm soát git và lưu các bản sao của các tệp nguồn JavaScript hiện có của bạn.
  2. Trong thư mục dự án, chạy firebase init functions và chọn TypeScript khi được nhắc cho một ngôn ngữ để viết các chức năng.
  3. Khi được nhắc liệu có nên ghi đè lên hiện package.json tập tin, chọn No, trừ khi bạn chắc chắn bạn không muốn giữ các tập tin hiện có.
  4. Xóa index.ts trong thư mục functions/src , thay thế nó bằng mã nguồn hiện tại của bạn.
  5. Trong tsconfig.json tập tin được tạo ra lúc khởi tạo, thiết lập các tùy chọn trình biên dịch cho phép JavaScript: "allowJs": true .
  6. Sao chép đã lưu của bạn package.json tập tin vào functions thư mục, và chỉnh sửa nó để thiết lập "main" để "lib/index.js" .
  7. Cũng trong package.json , thêm một xây dựng kịch bản cho nguyên cảo như sau:

     {
       "name": "functions",
       "scripts": {
         "build": "npm run lint && tsc"
       }
     ...
    
  8. Thêm "typescript" là một phụ thuộc dev bằng cách chạy npm install --save-dev typescript @typescript-eslint/eslint-plugin @typescript-eslint/parser .

  9. Đối với tất cả phụ thuộc, chạy npm install --save @types/<dependency> .

  10. Viết lại mã nguồn từ .js thành .ts như mong muốn.

Mô phỏng các chức năng TypeScript

Để kiểm tra chức năng đánh máy tại địa phương, bạn có thể sử dụng các công cụ mô phỏng được mô tả trong Run chức năng tại địa phương . Điều quan trọng là để biên dịch mã của bạn trước khi sử dụng những công cụ này, vì vậy hãy chắc chắn để chạy npm run build bên trong thư mục chức năng của bạn trước khi chạy firebase emulators:start hoặc firebase functions:shell . Ngoài ra, chạy npm run serve hoặc npm run shell như một phím tắt; các lệnh này đều chạy bản dựng và phục vụ / khởi động trình bao hàm.

Nhật ký chức năng cho các dự án TypeScript

Trong firebase deploy , dự án của bạn index.ts được transpiled để index.js , có nghĩa là chức năng của Cloud log chí số dòng đầu ra từ index.js tập tin và không phải là mã bạn viết. Để làm cho nó dễ dàng hơn cho bạn để tìm đường đi tương ứng và số dòng trong index.ts , firebase deploy tạo ra functions/lib/index.js.map . Bạn có thể sử dụng bản đồ nguồn này trong IDE ưa thích của bạn hoặc thông qua một mô-đun nút .