با مجموعهها، منظم بمانید
ذخیره و طبقهبندی محتوا براساس اولویتهای شما.
برای توسعه دهندگانی که ترجیح می دهند توابع را در TypeScript بنویسند، Cloud Functions دو نوع پشتیبانی ارائه می دهد:
ایجاد و پیکربندی پروژه های TypeScript برای انتقال خودکار در زمان اولیه ( firebase init functions ).
منبع TypeScript موجود را در زمان استقرار از طریق یک قلاب predeploy به جاوا اسکریپت انتقال دهید.
با پیروی از دستورالعملهای این راهنما، میتوانید یک پروژه جاوا اسکریپت موجود را به TypeScript منتقل کنید و به استقرار توابع با استفاده از یک هوک پیشفرض برای انتقال کد منبع خود ادامه دهید. TypeScript در هنگام نوشتن توابع مزایای زیادی نسبت به وانیلی جاوا اسکریپت ارائه می دهد:
TypeScript از آخرین ویژگی های جاوا اسکریپت مانند async/wait، ساده سازی مدیریت قول پشتیبانی می کند
پشتیبان Cloud Functions مشکلات رایج را در حین کدنویسی برجسته می کند
ایمنی نوع به شما کمک می کند از خطاهای زمان اجرا در توابع مستقر جلوگیری کنید
راه اندازی یک پروژه جدید Cloud Functions با TypeScript
firebase init functions در یک فهرست جدید اجرا کنید. این ابزار به شما گزینه هایی برای ساخت پروژه با جاوا اسکریپت یا TypeScript می دهد. برای خروجی ساختار پروژه زیر TypeScript را انتخاب کنید:
هنگامی که مقداردهی اولیه کامل شد، نمونه را در index.ts از کامنت خارج کنید و npm run serve اجرا کنید تا تابع "Hello World" را در عمل ببینید.
استفاده از یک پروژه TypeScript موجود
اگر یک پروژه TypeScript موجود دارید، میتوانید یک قلاب پیشگسترش اضافه کنید تا مطمئن شوید هر بار که کد خود را در Cloud Functions for Firebase قرار میدهید، پروژه شما ترجمه میشود. به یک فایل tsconfig.json و یک پروژه Firebase که به درستی شکل گرفته است، نیاز دارید و باید تغییرات زیر را در پیکربندی Firebase خود انجام دهید:
package.json را ویرایش کنید تا یک اسکریپت bash برای ساخت پروژه TypeScript خود اضافه کنید. به عنوان مثال:
{"name":"functions","scripts":{"build":"npm run lint && tsc"}...
firebase.json را ویرایش کنید تا یک قلاب از قبل برای اجرای اسکریپت ساخت اضافه کنید. به عنوان مثال:
{"functions":{"predeploy":"npm --prefix functions run build",}}
با این پیکربندی، یک فرمان firebase deploy --only functions کد TypeScript شما را می سازد و آن را به عنوان توابع مستقر می کند.
انتقال یک پروژه جاوا اسکریپت موجود به TypeScript
اگر یک پروژه Cloud Functions دارید که در جاوا اسکریپت مقداردهی اولیه و توسعه داده اید، می توانید آن را به TypeScript منتقل کنید. شما قویاً تشویق میشوید که قبل از شروع، یک نقطه بازرسی git یا سایر نسخههای پشتیبان ایجاد کنید.
برای انتقال یک پروژه JavaScript Cloud Functions :
یک چک پوینت git ایجاد کنید و کپی هایی از فایل های منبع جاوا اسکریپت موجود خود را ذخیره کنید.
در دایرکتوری پروژه، firebase init functions اجرا کنید و زمانی که از شما برای نوشتن توابع درخواست شد، TypeScript انتخاب کنید.
وقتی از شما خواسته شد که فایل package.json موجود را بازنویسی کنید، خیر را انتخاب کنید، مگر اینکه مطمئن باشید نمیخواهید فایل موجود را حفظ کنید.
index.ts در دایرکتوری functions/src حذف کنید و آن را با کد منبع موجود خود جایگزین کنید.
در فایل tsconfig.json ایجاد شده در زمان اولیه، گزینه های کامپایلر را طوری تنظیم کنید که به جاوا اسکریپت اجازه دهد: "allowJs": true .
فایل package.json ذخیره شده خود را در پوشه functions کپی کنید و آن را ویرایش کنید تا "main" را روی "lib/index.js" تنظیم کنید.
همچنین در package.json ، یک اسکریپت ساخت برای TypeScript مانند زیر اضافه کنید:
{"name":"functions","scripts":{"build":"npm run lint && tsc"}...
با اجرای npm install --save-dev typescript @typescript-eslint/eslint-plugin @typescript-eslint/parser"typescript" را به عنوان یک وابستگی به توسعه دهنده اضافه کنید.
برای همه وابستگی ها، npm install --save @types/<dependency> اجرا کنید.
کد منبع را به دلخواه از js به .ts بازنویسی کنید.
شبیه سازی توابع TypeScript
برای آزمایش توابع TypeScript به صورت محلی، می توانید از ابزارهای شبیه سازی که در Run functions به صورت محلی توضیح داده شده است استفاده کنید. مهم است که قبل از استفاده از این ابزارها کد خود را کامپایل کنید، بنابراین مطمئن شوید که قبل از اجرای firebase emulators:start یا firebase functions:shellnpm run build در دایرکتوری توابع خود اجرا کنید. از طرف دیگر، npm run serve یا npm run shell به عنوان میانبر اجرا کنید. این دستورات هم ساخت را اجرا می کنند و هم پوسته توابع را سرویس/شروع می کنند.
سیاهههای مربوط به توابع برای پروژه های TypeScript
در طول firebase deploy ، index.ts پروژه شما به index.js منتقل میشود، به این معنی که گزارش توابع ابری اعداد خطوط را از فایل index.js خارج میکند و نه کدی که شما نوشتهاید. برای آسانتر کردن یافتن مسیرها و شماره خطوط مربوطه در index.ts ، firebase deployfunctions/lib/index.js.map را ایجاد میکند. می توانید از این نقشه منبع در IDE دلخواه خود یا از طریق یک ماژول گره استفاده کنید.
تاریخ آخرین بهروزرسانی 2025-08-30 بهوقت ساعت هماهنگ جهانی.
[[["درک آسان","easyToUnderstand","thumb-up"],["مشکلم را برطرف کرد","solvedMyProblem","thumb-up"],["غیره","otherUp","thumb-up"]],[["اطلاعاتی که نیاز دارم وجود ندارد","missingTheInformationINeed","thumb-down"],["بیشازحد پیچیده/ مراحل بسیار زیاد","tooComplicatedTooManySteps","thumb-down"],["قدیمی","outOfDate","thumb-down"],["مشکل ترجمه","translationIssue","thumb-down"],["مشکل کد / نمونهها","samplesCodeIssue","thumb-down"],["غیره","otherDown","thumb-down"]],["تاریخ آخرین بهروزرسانی 2025-08-30 بهوقت ساعت هماهنگ جهانی."],[],[],null,["\u003cbr /\u003e\n\nFor developers who prefer to write functions in TypeScript,\nCloud Functions provides two types of support:\n\n- Create and configure TypeScript projects for automatic transpilation at initialization (`firebase init functions`).\n- Transpile existing TypeScript source to JavaScript at deploy time via a [predeploy hook](/docs/cli#hooks).\n\nFollowing instructions in this guide, you can migrate an existing\nJavaScript project to TypeScript and continue deploying functions using a\npredeploy hook to transpile your source code.\nTypeScript offers many benefits over vanilla JavaScript\nwhen writing functions:\n\n- TypeScript supports latest JavaScript features like async/await, simplifying promise management\n- A Cloud Functions linter highlights common problems while you're coding\n- Type safety helps you avoid runtime errors in deployed functions\n\nIf you're new to TypeScript, see [TypeScript in 5 minutes](http://www.typescriptlang.org/docs/handbook/typescript-in-5-minutes.html).\n\nInitializing a new Cloud Functions project with TypeScript\n\nRun `firebase init functions` in a new directory. The tool gives you options to build\nthe project with JavaScript or TypeScript. Choose **TypeScript** to output the\nfollowing project structure: \n\n myproject\n +- functions/ # Directory containing all your functions code\n |\n +- package.json # npm package file describing your Cloud Functions code\n |\n +- tsconfig.json\n |\n +- .eslintrc.js # Optional file if you enabled ESLint\n +- tsconfig.dev.json # Optional file that references .eslintrc.js\n |\n +- src/ # Directory containing TypeScript source\n | |\n | +- index.ts # main source file for your Cloud Functions code\n |\n +- lib/\n |\n +- index.js # Built/transpiled JavaScript code\n |\n +- index.js.map # Source map for debugging\n\nOnce initialization is complete, uncomment the sample in index.ts and run\n`npm run serve` to see a \"Hello World\" function in action.\n\nUsing an existing TypeScript project\n\nIf you have an existing TypeScript project, you can add a predeploy hook to\nmake sure your project is transpiled every time you deploy your code to\nCloud Functions for Firebase. You'll need a\nproperly formed `tsconfig.json` file and a Firebase project, and you'll need\nto make the following modifications to your Firebase configuration:\n\n1. Edit `package.json` to add a bash script to build your TypeScript project. For example:\n\n {\n \"name\": \"functions\",\n \"scripts\": {\n \"build\": \"npm run lint && tsc\"\n }\n ...\n\n2. Edit `firebase.json` to add a predeploy hook to run the build script. For example:\n\n {\n \"functions\": {\n \"predeploy\": \"npm --prefix functions run build\",\n }\n }\n\nWith this configuration, a `firebase deploy --only functions` command\nbuilds your TypeScript code and deploys it as functions.\n\nMigrating an existing JavaScript project to TypeScript\n\nIf you have an existing Cloud Functions project that you initialized\nand developed in JavaScript, you can migrate it to\nTypeScript. You're strongly encouraged to create a git checkpoint or other\nbackup before starting.\n\n**To migrate an existing JavaScript Cloud Functions project:**\n\n1. Create a git checkpoint and save copies of your existing JavaScript source files.\n2. In the project directory, run `firebase init functions` and select `TypeScript` when prompted for a language for writing functions.\n3. When prompted whether to overwrite the existing `package.json` file, select **No** unless you are sure you don't want to keep the existing file.\n4. Delete `index.ts` in the directory `functions/src`, replacing it with your existing source code.\n5. In the `tsconfig.json` file created at initialization, set the compiler options to allow JavaScript: `\"allowJs\": true`.\n6. Copy your saved `package.json` file into the `functions` directory, and edit it to set `\"main\"` to `\"lib/index.js\"`.\n7. Also in `package.json`, add a build script for TypeScript like the following:\n\n {\n \"name\": \"functions\",\n \"scripts\": {\n \"build\": \"npm run lint && tsc\"\n }\n ...\n\n8. Add `\"typescript\"` as a dev dependency by running `npm install --save-dev typescript @typescript-eslint/eslint-plugin @typescript-eslint/parser`.\n\n9. For all dependencies, run `npm install --save @types/\u003cdependency\u003e`.\n\n10. Rewrite source code from .js to .ts as desired.\n\nEmulating TypeScript functions\n\nTo test TypeScript functions locally, you can use the emulation tools described\nin [Run functions locally](/docs/functions/local-emulator). It's important to\ncompile your code before using these tools, so make sure to run `npm run build`\ninside your functions directory before running `firebase emulators:start` or\n`firebase functions:shell`. Alternatively, run `npm run serve` or\n`npm run shell` as a shortcut; these commands both run the build and\nserve/start the functions shell.\n\nFunctions logs for TypeScript projects\n\nDuring `firebase deploy`, your project's `index.ts` is transpiled to `index.js`,\nmeaning that the Cloud Functions log will output line numbers from the\n`index.js` file and not the code you wrote. To make it easier for you to find the\ncorresponding paths and line numbers in `index.ts`,\n`firebase deploy` creates `functions/lib/index.js.map`. You can use this source\nmap in your preferred IDE or via a [node module](https://github.com/evanw/node-source-map-support)."]]