Menu
Coddy logo textTech

ממשקים גנריים

חלק מהיחידה מבוא ל-TypeScript במסלול ה-JavaScript של Coddy. שיעור 61 מתוך 73.

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

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

interface Container<T> {
  value: T;
  isEmpty: boolean;
}

ה־<T> שמופיע אחרי שם הממשק יוצר פרמטר טיפוס שאפשר להשתמש בו בכל הגדרת הממשק. בדוגמה הזו, למאפיין value יהיה הטיפוס שתציין בעת השימוש בממשק, ואילו isEmpty יישאר מטיפוס boolean קבוע.

כשמשתמשים בממשק גנרי, מציינים את הסוג הקונקרטי בתוך סוגריים זוויתיים:

const stringContainer: Container<string> = {
  value: "hello",
  isEmpty: false
};
const numberContainer: Container<number> = {
  value: 42,
  isEmpty: false
};
challenge icon

אתגר

קל

צרו ממשק גנרי בשם Result שיכול להכיל נתונים מכל סוג, יחד עם מידע על הצלחה.

לממשק צריכים להיות שני מאפיינים:

  • success מסוג boolean
  • data מסוג T (פרמטר הסוג הגנרי)

צרו את האובייקטים הבאים באמצעות הממשק הגנרי שלכם:

  • stringResult מסוג Result<string> עם success: true ועם data: "Operation completed"
  • numberResult מסוג Result<number> עם success: true ועם data: 42
  • booleanResult מסוג Result<boolean> עם success: false ועם data: false
  • arrayResult מסוג Result<string[]> עם success: true ועם data: ["item1", "item2", "item3"]

צרו פונקציה גנרית בשם processResult אשר:

  • משתמשת בפרמטר סוג גנרי T
  • מקבלת פרמטר אחד, result, מסוג Result<T>
  • מחזירה הודעת מחרוזת
  • אם success הוא true, מחזירה את "Success: [data]"
  • אם success הוא false, מחזירה את "Failed: [data]"

הדפיסו את הפלטים הבאים:

  • הדפיסו את התוצאה של קריאה ל־processResult עם stringResult
  • הדפיסו את התוצאה של קריאה ל־processResult עם numberResult
  • הדפיסו את התוצאה של קריאה ל־processResult עם booleanResult
  • הדפיסו את התוצאה של קריאה ל־processResult עם arrayResult
  • הדפיסו את stringResult.data

נסו בעצמכם

// TODO: כתבו את הקוד שלכם כאן

// צרו את הממשק הגנרי Result


// צרו את האובייקטים באמצעות הממשק Result


// צרו את הפונקציה הגנרית processResult


// הדפיסו את הפלטים הנדרשים
quiz iconבחנו את עצמכם

השיעור הזה כולל חידון קצר. התחילו את השיעור כדי לענות עליו ולעקוב אחרי ההתקדמות.

כל השיעורים ביחידה מבוא ל-TypeScript

תרגלו בעצמכם: TypeScript אונליין