דילוג לתוכן המרכזי
מודול 3 · שיעור 1 מתוך 25/14 בקורס~12 min
שיעורי מודול (1/2)

פונקציות מוקלדות

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


פרמטרים אופציונליים וברירת מחדל

ב-JavaScript, כל פרמטר הוא אופציונלי וברירת המחדל היא undefined אם מושמט. ב-TypeScript, כברירת מחדל, כל פרמטר מוצהר הוא חובה.

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

1. פרמטרים אופציונליים

יש למקם פרמטרים אופציונליים אחרי כל הפרמטרים החובה:

TS
function greetUser(name: string, title?: string): string {
  if (title) {
    return `Good morning ${title} ${name}`;
  }
  return `Hello ${name}`;
}

2. פרמטרי ברירת מחדל

אם לא מסופק ערך עבור פרמטר עם ערך ברירת מחדל, TypeScript מסיק את הסוג שלו ומקצה את ברירת המחדל שצוינה:

TS
function greetUserWithDefault(name: string, prefix: string = 'Hello'): string {
  return `${prefix} ${name}`;
}

פרמטרי מנוחה (...args)

כאשר אנו רוצים לקבל מספר משתנה של ארגומנטים, אנו יכולים להשתמש באופרטור rest. ב-TypeScript, יש להקליד את הפרמטרים האלה כמערך:

TS
function sumAll(message: string, ...numbers: number[]): string {
  const total = numbers.reduce((sum, n) => sum + n, 0);
  return `${message} ${total}`;
}

סוגי פונקציות (חתימות שיחות)

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

TS
// Define function type using type alias
type MathOperation = (a: number, b: number) => number;

const add: MathOperation = (x, y) => x + y;
const multiply: MathOperation = (x, y) => x * y;

גישה זו חיונית בעת העברת פונקציות כארגומנטים לפונקציות אחרות (התקשרות חוזרת).


נסה זאת בעצמך

תרגיל 1: פרמטרים אופציונליים

פעילות גופנית#ts.m3.l1.e1
ניסיונות: 0טוען...

צור פונקציה בשם formatName שמקבלת פרמטר firstName (מחרוזת) ופרמטר lastName אופציונלי (מחרוזת). אם מסופק lastName, החזר 'firstName lastName', אחרת החזר רק 'firstName'.

טוען עורך...
הצג רמז

זכור שהפרמטר האופציונלי מוצהר באמצעות מחרוזת lastName?: אחרי החובה.

הפתרון זמין לאחר 3 ניסיונות

תרגיל 2: פרמטרי ברירת מחדל

פעילות גופנית#ts.m3.l1.e2
ניסיונות: 0טוען...

צור פונקציה בשם חזקה שמקבלת בסיס (מספר) ומעריך (מספר עם ערך ברירת מחדל של 2). הפונקציה חייבת לחשב ולהחזיר את ערך הבסיס שהועלה למעריך (השתמש ב- Math.pow).

טוען עורך...
הצג רמז

השתמש בבסיס: מספר ומעריך: מספר = 2 בתוך חתימת הפונקציה.

הפתרון זמין לאחר 3 ניסיונות

תרגיל 3: חתימת פונקציה

פעילות גופנית#ts.m3.l1.e3
ניסיונות: 0טוען...

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

טוען עורך...
הצג רמז

התחביר לסוג פונקציה הוא (a: מספר, b: number) => מספר.

הפתרון זמין לאחר 3 ניסיונות

תרגיל 4: פונקציית התקשרות חוזרת

פעילות גופנית#ts.m3.l1.e4
ניסיונות: 0טוען...

צור פונקציה בשם processItems שמקבלת שני פרמטרים: פריטים (מערך של מחרוזות) ו-callback (פונקציה שמקבלת מחרוזת בודדת ולא מחזירה כלום, כלומר, ריק). הפונקציה חייבת להריץ לולאה for...of מעל כל אלמנט בפריטים ולהעביר אותו ל-callback.

טוען עורך...
הצג רמז

הכריז על החתימה כ-procesItems(items: string[], callback: (item: string) => void): void והשתמש בלולאה כדי לקרוא ל-callback.

הפתרון זמין לאחר 3 ניסיונות