Đối với các nhà phát triển muốn viết hàm trong TypeScript, Cloud Functions cung cấp hai loại hỗ trợ:
- Tạo và định cấu hình các dự án TypeScript để biên dịch chuyển đổi tự động khi khởi chạy (
firebase init functions
). - Biên dịch ngược nguồn TypeScript hiện có sang JavaScript tại thời điểm triển khai thông qua lệnh gọi trước khi triển khai.
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 hàm bằng cách sử dụng trình bổ trợ triển khai trước để biên dịch mã nguồn. TypeScript mang lại nhiều lợi ích so với JavaScript thông thường khi viết hàm:
- TypeScript hỗ trợ các tính năng JavaScript mới nhất như async/await, đơn giản hoá việc quản lý lời hứa
- Công cụ tìm lỗi mã nguồn Cloud Functions làm nổi bật các vấn đề thường gặp trong khi bạn lập trình
- Tính năng an toàn về kiểu giúp bạn tránh các lỗi thời gian chạy trong các hàm đã triển khai
Nếu bạn mới sử dụng TypeScript, hãy xem bài viết TypeScript trong 5 phút.
Khởi chạy dự án Cloud Functions mới bằng TypeScript
Chạy firebase init functions
trong một thư mục mới. Công cụ này cung cấp cho bạn các tuỳ chọn để tạo dự án bằng JavaScript hoặc TypeScript. Chọn TypeScript để xuất ra 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
Sau khi hoàn tất quá trình khởi chạy, hãy bỏ ghi chú mẫu trong index.ts và chạy npm run serve
để xem hàm "Hello World" đang hoạt động.
Sử dụng dự án TypeScript hiện có
Nếu có một dự án TypeScript hiện có, bạn có thể thêm một trình bổ trợ triển khai trước để đảm bảo dự án được biên dịch mỗi khi bạn triển khai mã vào Cloud Functions for Firebase. Bạn sẽ cần một tệp tsconfig.json
được tạo đúng cách và một dự án Firebase. Ngoài ra, bạn cần thực hiện các sửa đổi sau đây đối với cấu hình Firebase:
Chỉnh sửa
package.json
để thêm tập lệnh bash nhằm tạo dự án TypeScript. Ví dụ:{ "name": "functions", "scripts": { "build": "npm run lint && tsc" } ...
Chỉnh sửa
firebase.json
để thêm một trình bổ trợ triển khai trước nhằm chạy tập lệnh bản dựng. Ví dụ:{ "functions": { "predeploy": "npm --prefix functions run build", } }
Với cấu hình này, lệnh firebase deploy --only functions
sẽ tạo mã TypeScript và triển khai mã đó dưới dạng hàm.
Di chuyển một dự án JavaScript hiện có sang TypeScript
Nếu có một dự án Cloud Functions hiện có mà bạn đã khởi chạy và phát triển bằng JavaScript, thì bạn có thể di chuyển dự án đó sang TypeScript. Bạn nên tạo một điểm kiểm tra git hoặc bản sao lưu khác trước khi bắt đầu.
Cách di chuyển dự án Cloud Functions JavaScript hiện có:
- Tạo một điểm kiểm tra git và lưu bản sao của các tệp nguồn JavaScript hiện có.
- Trong thư mục dự án, hãy chạy
firebase init functions
và chọnTypeScript
khi được nhắc chọn ngôn ngữ để viết hàm. - Khi được nhắc có ghi đè tệp
package.json
hiện có hay không, hãy chọn Không trừ phi bạn chắc chắn không muốn giữ lại tệp hiện có. - Xoá
index.ts
trong thư mụcfunctions/src
, thay thế bằng mã nguồn hiện có. - Trong tệp
tsconfig.json
được tạo khi khởi chạy, hãy đặt các tuỳ chọn trình biên dịch để cho phép JavaScript:"allowJs": true
. - Sao chép tệp
package.json
đã lưu vào thư mụcfunctions
rồi chỉnh sửa tệp đó để đặt"main"
thành"lib/index.js"
. Ngoài ra, trong
package.json
, hãy thêm một tập lệnh bản dựng cho TypeScript như sau:{ "name": "functions", "scripts": { "build": "npm run lint && tsc" } ...
Thêm
"typescript"
làm phần phụ thuộc cho nhà phát triển bằng cách chạynpm install --save-dev typescript @typescript-eslint/eslint-plugin @typescript-eslint/parser
.Đối với tất cả các phần phụ thuộc, hãy chạy
npm install --save @types/<dependency>
.Viết lại mã nguồn từ .js thành .ts nếu muốn.
Mô phỏng các hàm TypeScript
Để kiểm thử các hàm TypeScript trên máy, bạn có thể sử dụng các công cụ mô phỏng được mô tả trong phần Chạy hàm trên máy. Điều quan trọng là bạn phải biên dịch mã trước khi sử dụng các công cụ này. Vì vậy, hãy nhớ chạy npm run build
bên trong thư mục hàm trước khi chạy firebase emulators:start
hoặc firebase functions:shell
. Ngoài ra, hãy chạy npm run serve
hoặc npm run shell
dưới dạng lối tắt; các lệnh này vừa chạy bản dựng vừa phân phát/khởi động shell hàm.
Nhật ký hàm cho các dự án TypeScript
Trong firebase deploy
, index.ts
của dự án sẽ được chuyển đổi sang index.js
, nghĩa là nhật ký của Cloud Functions sẽ xuất ra số dòng từ tệp index.js
chứ không phải mã bạn đã viết. Để giúp bạn dễ dàng tìm thấy các đường dẫn và số dòng tương ứng trong index.ts
, firebase deploy
sẽ tạo functions/lib/index.js.map
. Bạn có thể sử dụng bản đồ nguồn này trong IDE mà bạn muốn hoặc thông qua mô-đun nút.