מבוא לסוגים ממופים מסוג TypeScript
טיפוסים ממופים ב-TypeScript מספקים דרך ליצור טיפוסים חדשים על ידי שינוי הקיימים. הם כלי רב עוצמה לטיפול בפעולות סוג מורכבות והבטחת בטיחות סוג ביישומי TypeScript. מאמר זה מציג סוגים ממופים, מסביר את התחביר שלהם ומספק דוגמאות להדגמת השימוש בהם.
מהם סוגים ממופים?
טיפוסים ממופים מאפשרים יצירת טיפוסים חדשים על ידי החלת טרנספורמציה על כל מאפיין מסוג קיים. הם משמשים לעתים קרובות כדי לשנות או להרחיב סוגים בצורה גמישה. התחביר הבסיסי של סוג ממופה הוא:
type MappedType = {
[K in keyof T]: NewType;
};
בתחביר הזה:
T
הוא הסוג המקורי.K
מייצג כל מפתח ב-T
.NewType
הוא הסוג החדש שהוקצה לכל מאפיין.
דוגמה בסיסית לסוגים ממופים
הנה דוגמה פשוטה לסוג ממופה הממיר את כל המאפיינים של סוג נתון לקריאה בלבד:
type ReadOnly = {
readonly [K in keyof T]: T[K];
};
type User = {
name: string;
age: number;
};
type ReadOnlyUser = ReadOnly;
בדוגמה זו, הסוג הממוף ReadOnly
הופך את כל המאפיינים מהסוג User
לקריאה בלבד, וכתוצאה מכך סוג חדש ReadOnlyUser
שבו כל המאפיינים אינם ניתנים לשינוי.
סוגים ממופים עם טרנספורמציות של סוגים
ניתן להשתמש בסוגים ממופים גם כדי להפוך טיפוסים בדרכים מורכבות יותר. לדוגמה, סוג ממופה שהופך את כל המאפיינים לאופציונליים:
type Partial = {
[K in keyof T]?: T[K];
};
type User = {
name: string;
age: number;
};
type PartialUser = Partial;
בדוגמה זו, הסוג הממפה Partial
הופך את כל המאפיינים מסוג User
לאופציונליים, וכתוצאה מכך סוג חדש PartialUser
שבו כל מאפיין הוא אופציונלי.
שימוש בסוגים ממופים עם סוגים מותנים
ניתן לשלב טיפוסים ממופים עם טיפוסים מותנים לפעולות טיפוס מתוחכמות יותר. לדוגמה, יצירת סוג הכולל רק מאפיינים מסוג מסוים:
type OnlyStrings = {
[K in keyof T]: T[K] extends string ? T[K] : never;
};
type User = {
name: string;
age: number;
email: string;
};
type StringProperties = OnlyStrings;
בדוגמה זו, הסוג הממופות OnlyStrings
מסנן מאפיינים שאינם מסוג string
, וכתוצאה מכך סוג חדש StringProperties
הכולל רק מאפייני מחרוזת מה- סוג משתמש
.
סוגי מיפוי מתקדמים
מקרי שימוש מתקדמים עבור טיפוסים ממופים כוללים יצירת טיפוסים המשנים סוגים קיימים בהתבסס על תנאים שונים. לדוגמה, סוג ממופה שמוסיף סיומת לכל שם מאפיין:
type WithSuffix<T, S extends string> = {
[K in keyof T as `${string & K}${S}`]: T[K];
};
type User = {
name: string;
age: number;
};
type UserWithSuffix = WithSuffix<User, "Prop">;
בדוגמה זו, הסוג הממפה WithSuffix
מוסיף סיומת לכל שם מאפיין מסוג User
, וכתוצאה מכך סוג חדש UserWithSuffix
שבו לשמות המאפיינים יש את המאפיינים שצוינו סִיוֹמֶת.
מַסְקָנָה
טיפוסים ממופים ב-TypeScript הם תכונה רב-תכליתית המאפשרת למפתחים ליצור סוגים חדשים על ידי שינוי הקיימים. על ידי הבנה ושימוש בסוגים ממופים, מפתחים יכולים לנהל טרנספורמציות סוגים מורכבות ולהבטיח בטיחות טיפוסית רבה יותר בקוד ה-TypeScript שלהם. סוגים ממופים מציעים יכולות עוצמתיות לשיפור והתאמה אישית של הגדרות סוג ביישומי TypeScript.