Для разработчиков, предпочитающих писать функции на TypeScript, Cloud Functions предоставляет два типа поддержки:
-  Создайте и настройте проекты TypeScript для автоматической транспиляции при инициализации ( firebase init functions).
- Транспилируйте существующий исходный код TypeScript в JavaScript во время развертывания с помощью хука predeploy .
Следуя инструкциям в этом руководстве, вы можете перенести существующий проект JavaScript на TypeScript и продолжить развертывание функций, используя хук predeploy для транспиляции исходного кода. TypeScript предлагает множество преимуществ по сравнению с обычным JavaScript при написании функций:
- TypeScript поддерживает новейшие функции JavaScript, такие как async/await, упрощая управление обещаниями.
- Линтер 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, вы можете добавить хук predeploy, чтобы обеспечить транспиляцию проекта при каждом развертывании кода в Cloud Functions for Firebase . Вам понадобятся правильно сформированный файл tsconfig.json и проект Firebase, а также следующие изменения в конфигурации Firebase:
- Отредактируйте - package.json, чтобы добавить bash-скрипт для сборки вашего проекта TypeScript. Например:- { "name": "functions", "scripts": { "build": "npm run lint && tsc" } ...
- Отредактируйте - 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 :
- Создайте контрольную точку git и сохраните копии существующих исходных файлов JavaScript.
-  В каталоге проекта запустите firebase init functionsи выберитеTypeScriptпри появлении запроса на язык для написания функций.
-  При появлении запроса на перезапись существующего файла package.jsonвыберите «Нет» , если только вы не уверены, что хотите сохранить существующий файл.
-  Удалите index.tsв каталогеfunctions/src, заменив его существующим исходным кодом.
-  В файле tsconfig.json, созданном при инициализации, задайте параметры компилятора, разрешающие JavaScript:"allowJs": true.
-  Скопируйте сохраненный файл package.jsonв каталогfunctionsи отредактируйте его, установив для"main"значение"lib/index.js".
- Также в - package.jsonдобавьте скрипт сборки для TypeScript следующим образом:- { "name": "functions", "scripts": { "build": "npm run lint && tsc" } ...
- Добавьте - "typescript"как зависимость разработки, выполнив- npm install --save-dev typescript @typescript-eslint/eslint-plugin @typescript-eslint/parser.
- Для всех зависимостей выполните - npm install --save @types/<dependency>.
- При необходимости перепишите исходный код из .js в .ts. 
Эмуляция функций TypeScript
 Для локального тестирования функций TypeScript можно использовать инструменты эмуляции, описанные в разделе «Локальный запуск функций» . Важно скомпилировать код перед использованием этих инструментов, поэтому обязательно запустите npm run build в каталоге функций перед запуском firebase emulators:start или firebase functions:shell . В качестве альтернативы, можно использовать npm run serve или npm run shell в качестве ярлыка; эти команды одновременно запускают сборку и serve/start оболочку функций.
Журналы функций для проектов TypeScript
 Во время firebase deploy index.ts вашего проекта транспилируется в index.js , что означает, что в журнале Cloud Functions будут отображаться номера строк из файла index.js , а не написанный вами код. Чтобы упростить поиск соответствующих путей и номеров строк в index.ts , firebase deploy создает functions/lib/index.js.map . Вы можете использовать эту карту исходного кода в предпочитаемой вами IDE или через модуль Node .