דילוג לתוכן המרכזי
מודול 6 · שיעור 2 מתוך 212/14 בקורס~15 min
שיעורי מודול (2/2)

סוגים ממופים

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

TS
type Mapped<T> = {
  [P in keyof T]: T[P];
};

דוגמה זו מציגה סוג ממופה זהה לזה המקורי: הוא חוזר על כל מקש P ב-keyof T ומקצה את אותו סוג T[P].


שינויי שינוי ואופציונליות

אנו יכולים להוסיף או להסיר מתקנים כמו readonly ו-? (אופציונליות) על ידי הקדמתם + (הוסף, ברירת מחדל) או - (הסר).

לדוגמה, כדי להסיר אופציונליות מכל המאפיינים של סוג (מה שהופך אותם לנדרש):

TS
type Concrete<T> = {
  [P in keyof T]-?: T[P];
};

השינוי -? מסיר את דגל האופציונליות מכל מאפיין.


מיפוי מחדש של מפתחות עם as

ב-TypeScript 4.1+, אתה יכול למפות מחדש מפתחות בסוג ממופה באמצעות הסעיף as והסוגים המילוליים של התבנית.

TS
type WriteSetters<T> = {
  [K in keyof T as `set${Capitalize<string & K>}`]: (value: T[K]) => void;
};

כאן אנו משנים את השם של כל מאפיין K ל-set[CapitalizedKey] ומשנים את הסוג שלו לפונקציית מגדיר.


נסה זאת בעצמך

תרגיל 1: הפיכת מאפיינים לבטלים

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

הכריז על סוג ממופה גנרי Nullable<T> שלוקח אובייקט T והופך כל מאפיין כך שהוא יכול לקבל גם את הערך null (למשל T[K] | null).

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

השתמש בתחביר [K במפתח T]: T[K] | בָּטֵל; בתוך האובייקט מסוג ממופה.

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

תרגיל 2: יצירת מגברים דינמיים עם as

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

צור סוג ממופה בשם GetterNames<T> שהופך את המפתחות של האובייקט T על ידי הקדמת 'get' ושימוש באותיות רישיות במפתח המקורי (השתמש באותיות רישיות). לדוגמה, אם מפתח הוא שם, הוא צריך להפוך ל-getName. הגדר את סוג המאפיינים ל-() => T[K].

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

השתמש בתור \`get\${Capitalize<string & K>}\` כדי למפות מחדש את המפתח וב-() => T[K] כסוג החזרת המאפיין.

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