מבוא לסוגי פונקציות ב-TypeScript

TypeScript דורשת טיפוסים (types) לכל דבר. זה כולל גם את הפונקציות שלך. עליך להגדיר טיפוסים עבור קלטים ופלטים.

תחביר פונקציות

אתה מגדיר טיפוסי קלט וטיפוס פלט בצורה הבאה:

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

TypeScript משתמשת גם בהסקת טיפוסים (type inference). אין צורך תמיד לכתוב את טיפוס הפלט; הקומפיילר מוצא אותו עבורך.

אם הפונקציה שלך מחזירה טיפוסים שונים, TypeScript מטפלת בכך. לדוגמה, אם פונקציה מחזירה מספר או מחרוזת (string), הקומפיילר מזהה את שניהם.

טיפוסי החזרה מיוחדים

  • void: השתמש בזה כאשר פונקציה אינה מחזירה דבר.
  • never: השתמש בזה כאשר פונקציה זורקת שגיאה או עוצרת את התוכנית.

פרמטרים

ניתן להפוך פרמטרים לאופציונליים באמצעות סימן שאלה.

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

פונקציות הן ערכים. ניתן להעביר אותן כארגומנטים. כדי להגדיר טיפוס callback, השתמש בתחביר הבא:

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

שמות הפרמטרים ב-callback אינם משנים. רק הטיפוסים חשובים.

מערכים של פונקציות

אם אתה זקוק לרשימה של פונקציות, הגדר אותן כמערך של אותו טיפוס פונקציה.

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

פרמטרי Rest

השתמש באופרטור ה-spread כדי לקבל מספר שרירותי של ארגומנטים. פעולה זו שומרת את כל הקלטים בתוך מערך.

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

sum(1, 2, 3);

מקור: https://dev.to/jsha/introduction-to-typescript-function-types-hin