Die 'bevredig'-operateur in TypeScript

Bevestig dat die tipe uitdrukking by een of ander tipe pas, sonder om die resulterende tipe van daardie uitdrukking te verander

TypeScript 4.9 bevredig

Met weergawe 4.9 stel TypeScript 'n nuwe operateur bekend genaamd die "satisfies"-operateur. Die doel daarvan is om nie-homogene tipe stelle meer buigsaam te maak deur 'n unie van tipes toe te laat om die algehele tipe te bevredig.

Maak tipe fout reg met Rekord<>

Die beste voorbeeld om hierdie nuwe operateur te demonstreer, gebruik 'n "Rekord"-tipe, waar die tipes waardes kan verskil.

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

Soos u kan sien, kan die nuwe kode die geldige tipe vir die gegewe sleutel korrek aflei. Dit sou nie moontlik wees voor TypeScript 4.9. Die samesteller sal kla dat die waarde van tipe string of nommer kan wees, terwyl die samesteller nou die spesifieke tipe korrek aflei.

Eiendom Naam beperking

Ons kan ook die nuwe operateur gebruik om die samesteller opdrag te gee dat dit in orde is vir 'n stel om slegs 'n paar gegewe sleutels in te sluit, maar nie enige ander te aanvaar nie.

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

Meer voorbeelde

Vir 'n volledige lys voorbeelde met in-diepte beskrywings, beveel ek hierdie kenmerk se oorspronklike uitgawe op Github sterk aan, waar die skrywer baie gebruiksgevalle beskryf (skakel ook in die addendum).