TypeScript'te 'satisfies' operatörü

Bir ifadenin türünün, o ifadenin elde edilen türünü değiştirmeden bir türle eşleştiğini doğrulayın

TypeScript 4.9 tatmin edici

4.9 sürümüyle birlikte TypeScript, "satisfies"-operator adlı yeni bir operatör sunar. Amacı, bir tür birleşiminin genel türü karşılamasına izin vererek homojen olmayan tür kümelerini daha esnek hale getirmektir.

Kayıtla tip hatasını düzelt<>

Bu yeni operatörü göstermek için en iyi örnek, değerlerin türlerinin farklı olabileceği bir “Kayıt” tipini kullanır.

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();

Gördüğünüz gibi, yeni kod, verilen anahtar için geçerli türün doğru bir şekilde çıkarılmasına izin veriyor. TypeScript 4.9'dan önce bu mümkün olmazdı. Derleyici, değerin dize veya sayı türünde olabileceğinden şikayet eder, oysa şimdi derleyici belirli türü doğru bir şekilde çıkarır.

Özellik Adı Kısıtlayıcı

Ayrıca derleyiciye bir kümenin yalnızca belirli anahtarları içermesi, ancak diğerlerini kabul etmemesi için komut vermek için new operatörünü kullanabiliriz.

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>>;

Daha fazla örnek

Ayrıntılı açıklamalar içeren örneklerin tam listesi için, yazarın birçok kullanım örneğini açıkladığı Github'daki bu özelliğin orijinal sorununu şiddetle tavsiye ediyorum (bağlantı ayrıca ekte).