عامل التشغيل 'يرضي' في TypeScript

تحقق من أن نوع التعبير يطابق نوعًا ما ، بدون تغيير النوع الناتج لذلك التعبير

يرضي TypeScript 4.9

مع الإصدار 4.9 ، تقدم TypeScript عامل تشغيل جديد يسمى المشغل "يرضي". والغرض من ذلك هو جعل مجموعات الأنواع غير المتجانسة أكثر مرونة من خلال السماح لاتحاد الأنواع بإرضاء النوع الكلي.

إصلاح نوع الخطأ في السجل <>

يستخدم أفضل مثال لإثبات هذا العامل الجديد نوع "السجل" ، حيث يمكن أن تختلف أنواع القيم.

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 ، حيث يصف المؤلف العديد من حالات الاستخدام (يوجد الرابط أيضًا في الملحق).