فهرست سرفصل‌های TypeScript
خانه (Home) معرفی (Introduction) شروع سریع (Get Started) انواع ساده (Simple Types) تعریف صریح و استنتاج نوع (Explicit & Inference) انواع ویژه (Special Types) آرایه ها (Arrays) تاپل ها (Tuples) انواع شیء (Object Types) شمارشی ها (Enums) نام مستعار و اینترفیس ها (Aliases & Interfaces) انواع اتحادی (Union Types) توابع (Functions) تبدیل نوع (Casting) کلاس ها (Classes) جنریک های پایه (Basic Generics) انواع کاربردی (Utility Types) کلیدواژه keyof (Keyof) Null (Null) Definitely Typed (Definitely Typed) به روزرسانی های نسخه 5 (5 Updates) پیکربندی (Configuration) با Node.js (with Node.js) با React (with React) ابزارها (Tooling) انواع پیشرفته (Advanced Types) نگهبان های نوع (Type Guards) انواع شرطی (Conditional Types) انواع نگاشتی (Mapped Types) استنتاج نوع (Type Inference) انواع لیترال (Literal Types) فضای نام (Namespaces) امضاهای ایندکس (Index Signatures) ادغام اعلان ها (Declaration Merging) برنامه نویسی ناهمگام (Async Programming) دکوراتورها (Decorators) در پروژه های JS (in JS Projects) مهاجرت (Migration) مدیریت خطا (Error Handling) بهترین شیوه ها (Best Practices) ادیتور (Editor) تمرین ها (Exercises) آزمون (Quiz) سرفصل دوره (Syllabus) برنامه مطالعه (Study Plan) گواهینامه (Certificate)
نتیجه‌ای برای جستجو یافت نشد.
TypeScript

TypeScript — توابع (Functions)

آخرین بروزرسانی: 1404/08/14

توابع (Functions)

«تابع (Function)» مثل یک ماشین حساب کوچک است. ورودی می گیرد، کاری می کند، و خروجی می دهد. در تایپ اسکریپت، نوع ورودی و خروجی را مشخص می کنیم تا خطاها زود کشف شوند.

نوع بازگشتی (Return Type)

می توانیم نوع خروجی را صریح بنویسیم تا کد شفاف بماند.

function getTime(): number {
  return new Date().getTime();
}

مشاهده در ادیتور

نکته: اگر نوع را ننویسید، تایپ اسکریپت تلاش می کند آن را حدس بزند.

void یعنی بدون خروجی

نوع void یعنی تابع هیچ مقداری برنمی گرداند.

function printHello(): void {
  console.log('Hello!');
}

مشاهده در ادیتور

پارامترها (Parameters)

برای پارامترها هم مثل متغیرها نوع می نویسیم.

function multiply(a: number, b: number) {
  return a * b;
}

مشاهده در ادیتور

نکته: بدون نوع صریح، ممکن است any شود و ایمنی کم شود.

پارامتر اختیاری (Optional)

با ? پارامتر را اختیاری می کنیم؛ یعنی ممکن است نیاید.

function add(a: number, b: number, c?: number) {
  return a + b + (c || 0);
}

مشاهده در ادیتور

مقدار پیش فرض (Default)

پارامتر پیش فرض یعنی اگر ورودی ندادیم، این مقدار استفاده شود.

function pow(value: number, exponent: number = 10) {
  return value ** exponent;
}

مشاهده در ادیتور

پارامترهای نام دار (Named)

با شیء، ورودی ها را نام دار می کنیم تا خواناتر شوند.

function divide({ dividend, divisor }: { dividend: number, divisor: number }) {
  return dividend / divisor;
}

مشاهده در ادیتور

rest پارامترها

rest همیشه آرایه است؛ بنابراین نوع آن باید آرایه باشد.

function add(a: number, b: number, ...rest: number[]) {
  return a + b + rest.reduce((p, c) => p + c, 0);
}

مشاهده در ادیتور

نوع تابع با Type Alias

می توانیم نوع تابع را جدا تعریف کنیم و دوباره استفاده کنیم.

type Negate = (value: number) => number;

const negateFunction: Negate = (value) => value * -1;

مشاهده در ادیتور

گام های عملی

  1. برای هر تابع، نوع بازگشتی را بنویس.
  2. برای هر پارامتر، نوع شفاف تعیین کن.
  3. از اختیاری و پیش فرض، هوشمندانه استفاده کن.

بخش انواع اتحادی را ببین تا ورودی ها را منعطف کنی. همچنین به نام مستعار و اینترفیس ها برای تعریف نوع های قابل استفاده مجدد سر بزن. برای مرجع سریع، همین صفحه توابع را نشانه گذاری کن.

جمع بندی سریع

  • نوع ورودی و خروجی را مشخص کن.
  • void یعنی بدون خروجی.
  • اختیاری با ? تعریف می شود.
  • rest همیشه آرایه است.
  • Type Alias کد را تمیزتر می کند.