Skip to content

טיפוסי העזר של TypeScript מוסברים

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

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

טבלת עזר · 22 ערכים
22 of 22 rows
צורת אובייקט
T שבו כל מאפיין הופך לאופציונלי.type Update = Partial<User>
T שבו כל מאפיין הופך לחובה.type Strict = Required<Opts>
T שבו כל מאפיין הופך ל-readonly.type Frozen = Readonly<User>
T שבו נשמרות רק המפתחות שב-K.type Preview = Pick<User, "id" | "name">
T שממנו הוסרו המפתחות שב-K.type SafeUser = Omit<User, "password">
אובייקט שהמפתחות שלו הם K והערכים שלו הם V.type Scores = Record<string, number>
סינון איחודים
האיחוד U בלי החברים שניתנים להשמה ל-X.type NoNull = Exclude<T, null>
החברים של U שניתנים להשמה ל-X.type OnlyStr = Extract<T, string>
T בלי null ובלי undefined.type Def = NonNullable<T>
טיפוסי פונקציות
tuple של טיפוסי הפרמטרים של הפונקציה F.type P = Parameters<typeof fn>
הטיפוס שהפונקציה F מחזירה.type R = ReturnType<typeof fn>
tuple של טיפוסי הפרמטרים של הבנאי F.type C = ConstructorParameters<typeof Date>
טיפוס המופע שהבנאי F מייצר.type D = InstanceType<typeof Date>
הטיפוס ש-Promise מתפרקת אליו, באופן רקורסיבי.type Data = Awaited<Promise<User>>
טרנספורמציות של מחרוזות ליטרל
הליטרל S באותיות גדולות.type A = Uppercase<"abc"> // "ABC"
הליטרל S באותיות קטנות.type B = Lowercase<"ABC"> // "abc"
S עם התו הראשון באות גדולה.type C = Capitalize<"abc"> // "Abc"
S עם התו הראשון באות קטנה.type D = Uncapitalize<"Abc"> // "aBc"
מילות מפתח קשורות
איחוד של מפתחות המאפיינים של טיפוס האובייקט T.type K = keyof User
הטיפוס של ערך, בלי לאיית אותו מחדש.type Config = typeof defaults
לוכד טיפוס בתוך תנאי לצורך שימוש חוזר.type El<T> = T extends Array<infer I> ? I : never
בוחר את הטיפוס X או Y לפי האם T ניתן להשמה ל-U.type IsStr<T> = T extends string ? true : false