مقدمه‌ای بر انواع توابع در TypeScript

TypeScript برای همه چیز به تایپ نیاز دارد. این شامل توابع شما نیز می‌شود. شما باید تایپ‌های ورودی و خروجی را تعریف کنید.

Function Syntax

شما تایپ‌های ورودی و یک تایپ خروجی را به این صورت تعریف می‌کنید:

function add(x: number, y: number): number {
  return x + y;
}

TypeScript همچنین از استنتاج تایپ (type inference) استفاده می‌کند. همیشه نیازی به نوشتن تایپ خروجی نیست؛ کامپایلر آن را برای شما پیدا می‌کند.

اگر تابع شما تایپ‌های مختلفی را برگرداند، TypeScript آن را مدیریت می‌کند. برای مثال، اگر تابعی یک عدد یا یک رشته را برگرداند، کامپایلر هر دو را تشخیص می‌دهد.

Special Return Types

  • void: زمانی از این استفاده کنید که تابع چیزی را برنمی‌گرداند.
  • never: زمانی از این استفاده کنید که تابع یک خطا پرتاب می‌کند یا برنامه را متوقف می‌کند.

Parameters

می‌توانید با استفاده از علامت سوال، پارامترها را اختیاری کنید.

function makeProfile(name: string, age: number, url?: string) {
  // code
}

همچنین می‌توانید از مقادیر پیش‌فرض استفاده کنید. این کار باعث می‌شود یک پارامتر بدون نیاز به نمادهای خاص، اختیاری شود.

function makeProfile(name: string, age: number, url: string = "www.example.com") {
  return name + " visits " + url;
}

Callback Functions

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

function makePage(func: (n: string, a: number, u?: string) => string, param1: string, param2: number) {
  func(param1, param2);
}

نام پارامترها در کال‌بک اهمیتی ندارد؛ تنها تایپ‌ها مهم هستند.

Arrays of Functions

اگر به لیستی از توابع نیاز دارید، آن‌ها را به عنوان آرایه‌ای از آن تایپِ تابع تعریف کنید.

function applyMath(funcs: ((a: number, b: number) => number)[], x: number, y: number) {
  // code
}

Rest Parameters

از عملگر spread برای پذیرش هر تعداد آرگومان استفاده کنید. این کار تمام ورودی‌ها را در یک آرایه ذخیره می‌کند.

function sum(...numbers: number[]) {
  // code
}

sum(1, 2, 3);

Source: https://dev.to/jsha/introduction-to-typescript-function-types-hin