כיצד ליצור ולהשתמש בסוגי עזר מסוג TypeScript

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

מהם סוגי כלי השירות TypeScript?

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

סוגי עזר מסוג TypeScript הנפוצים

להלן כמה מסוגי השירות הנפוצים ביותר של TypeScript:

  • חלקי<T> – הופך את כל המאפיינים מסוג T לאופציונליים.
  • חובה<T> - מחייב את כל המאפיינים מסוג T.
  • לקריאה בלבד<T> - הופך את כל המאפיינים מסוג T לקריאה בלבד.
  • בחר<T, K> – בוחר קבוצה של מאפיינים K מהסוג T.
  • השמט<T, K> – מסיר קבוצה של מאפיינים K מהסוג T.
  • רשומה<K, T> – בונה סוג אובייקט עם מפתחות מסוג K וערכים מסוג T.

דוגמה: שימוש בחלקי<T>

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

interface User {
  name: string;
  age: number;
  email: string;
}

const updateUser = (user: Partial<User>) => {
  // Update logic
};

updateUser({ name: "John" });

בדוגמה זו, updateUser מקבל ארגומנט מסוג חלקי<User>, כלומר רק חלק מהמאפיינים של נדרש ממשק משתמש.

דוגמה: שימוש ב-Pick<T, K>

סוג השירות Pick מאפשר לבחור קבוצת משנה של מאפיינים מסוג:

interface User {
  name: string;
  age: number;
  email: string;
}

type UserContactInfo = Pick<User, "name" | "email">;

const contactInfo: UserContactInfo = {
  name: "John",
  email: "[email protected]"
};

כאן, Pick<User, “name” | “email”> יוצר סוג חדש של UserContactInfo עם רק שם ו- מאפייני אימייל מהממשק המקורי של משתמש.

דוגמה: שימוש ב-Omit<T, K>

סוג השירות השמט מסיר מאפיינים שצוינו מסוג:

interface User {
  name: string;
  age: number;
  email: string;
}

type UserWithoutEmail = Omit<User, "email">;

const user: UserWithoutEmail = {
  name: "John",
  age: 30
};

בדוגמה זו, הסוג UserWithoutEmail נוצר על ידי השמטת המאפיין email מממשק User.

יצירת סוגי כלי שירות מותאמים אישית

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

type MyPartial<T> = {
  [P in keyof T]?: T[P];
};

interface User {
  name: string;
  age: number;
  email: string;
}

const user: MyPartial<User> = {
  name: "Alice"
};

סוג MyPartial מותאם אישית זה פועל בדומה לסוג השירות המובנה Partial של TypeScript.

מַסְקָנָה

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