ה-'satisfies'-operator ב-TypeScript

ודא שסוג הביטוי תואם סוג כלשהו, מבלי לשנות את הסוג המתקבל של אותו ביטוי

TypeScript 4.9 מספק

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

תקן שגיאת סוג עם Record<>

הדוגמה הטובה ביותר להדגמת אופרטור חדש זה משתמשת בסוג "Record", שבו סוגי הערכים יכולים להיות שונים.

type Keys = "alpha" | "beta" | "gamma";

const variants = {
  alpha: 0,
  beta: 1,
  gamma: "three"
} satisfies Record<Keys, string | number>;

// With the new 'satisfies'-operator,
// the types for each of the properties
// is correctly inferred.
const otherBeta = variants.beta + 10;
const gammeUppercase = variants.gamma.toUpperCase();

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

מגביל שם נכס

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

type Keys = "alpha" | "beta" | "gamma";

const variants = {
    alpha: "value",
    beta: 0,
    // The compiler will show an error,
    // as 'delta' is not part of the keys.
    delta: new Date()
} satisfies Partial<Record<Keys, unknown>>;

דוגמאות נוספות

לרשימה מלאה של דוגמאות עם תיאורים מעמיקים, אני ממליץ בחום על הגיליון המקורי של תכונה זו ב- Github, שם המחבר מתאר מקרי שימוש רבים (קישור גם בתוספת).