Para los desarrolladores que prefieren escribir funciones en TypeScript, Cloud Functions ofrece dos tipos de soporte:
- Cree y configure proyectos de TypeScript para la transpilación automática en la inicialización (
firebase init functions
). - Transpile el código fuente de TypeScript existente a JavaScript en el momento de la implementación mediante un enlace previo a la implementación .
Siguiendo las instrucciones de esta guía, puede migrar un proyecto JavaScript existente a TypeScript y continuar implementando funciones usando un enlace previo a la implementación para transpilar su código fuente. TypeScript ofrece muchos beneficios sobre JavaScript básico al escribir funciones:
- TypeScript admite las últimas funciones de JavaScript como async/await, lo que simplifica la gestión de promesas
- Un linter de Cloud Functions destaca problemas comunes mientras codificas
- La seguridad de tipos le ayuda a evitar errores de tiempo de ejecución en las funciones implementadas
Si eres nuevo en TypeScript, consulta TypeScript en 5 minutos .
Inicializando un nuevo proyecto de Cloud Functions con TypeScript
Ejecute firebase init functions
en un nuevo directorio. La herramienta le brinda opciones para construir el proyecto con JavaScript o TypeScript. Elija TypeScript para generar la siguiente estructura del proyecto:
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
Una vez completada la inicialización, descomente el ejemplo en index.ts y ejecute npm run serve
para ver la función "Hola mundo" en acción.
Usando un proyecto TypeScript existente
Si tiene un proyecto TypeScript existente, puede agregar un enlace previo a la implementación para asegurarse de que su proyecto se transpile cada vez que implemente su código en Cloud Functions para Firebase. Necesitará un archivo tsconfig.json
con el formato correcto y un proyecto de Firebase, y deberá realizar las siguientes modificaciones en su configuración de Firebase:
Edite
package.json
para agregar un script bash para construir su proyecto TypeScript. Por ejemplo:{ "name": "functions", "scripts": { "build": "npm run lint && tsc" } ...
Edite
firebase.json
para agregar un enlace previo a la implementación para ejecutar el script de compilación. Por ejemplo:{ "functions": { "predeploy": "npm --prefix functions run build", } }
Con esta configuración, un comando firebase deploy --only functions
crea su código TypeScript y lo implementa como funciones.
Migrar un proyecto de JavaScript existente a TypeScript
Si tiene un proyecto de Cloud Functions existente que inicializó y desarrolló en JavaScript, puede migrarlo a TypeScript. Se recomienda encarecidamente crear un punto de control de git u otra copia de seguridad antes de comenzar.
Para migrar un proyecto existente de JavaScript Cloud Functions:
- Cree un punto de control de git y guarde copias de sus archivos fuente de JavaScript existentes.
- En el directorio del proyecto, ejecute
firebase init functions
y seleccioneTypeScript
cuando se le solicite un lenguaje para escribir funciones. - Cuando se le pregunte si desea sobrescribir el archivo
package.json
existente, seleccione No a menos que esté seguro de que no desea conservar el archivo existente. - Elimine
index.ts
en el directoriofunctions/src
y reemplácelo con su código fuente existente. - En el archivo
tsconfig.json
creado durante la inicialización, configure las opciones del compilador para permitir JavaScript:"allowJs": true
. - Copie su archivo
package.json
guardado en el directoriofunctions
y edítelo para configurar"main"
en"lib/index.js"
. También en
package.json
, agregue un script de compilación para TypeScript como el siguiente:{ "name": "functions", "scripts": { "build": "npm run lint && tsc" } ...
Agregue
"typescript"
como dependencia de desarrollo ejecutandonpm install --save-dev typescript @typescript-eslint/eslint-plugin @typescript-eslint/parser
.Para todas las dependencias, ejecute
npm install --save @types/<dependency>
.Vuelva a escribir el código fuente de .js a .ts como desee.
Emulando funciones de TypeScript
Para probar las funciones de TypeScript localmente, puede utilizar las herramientas de emulación descritas en Ejecutar funciones localmente . Es importante compilar su código antes de usar estas herramientas, así que asegúrese de ejecutar npm run build
dentro de su directorio de funciones antes de ejecutar firebase emulators:start
o firebase functions:shell
. Alternativamente, ejecute npm run serve
o npm run shell
como acceso directo; Estos comandos ejecutan la compilación y sirven/inician el shell de funciones.
Registros de funciones para proyectos TypeScript
Durante firebase deploy
, index.ts
de su proyecto se transpila a index.js
, lo que significa que el registro de Cloud Functions generará números de línea del archivo index.js
y no el código que escribió. Para que le resulte más fácil encontrar las rutas correspondientes y los números de línea en index.ts
, firebase deploy
crea functions/lib/index.js.map
. Puede utilizar este mapa fuente en su IDE preferido o mediante un módulo de nodo .