A TypeScript 4.9 megfelel
A 4.9-es verzióval a TypeScript új operátort vezet be, a „satisfies” operátort. Célja, hogy a nem homogén típuskészleteket rugalmasabbá tegye azáltal, hogy lehetővé teszi a típusok egyesülését, hogy kielégítse az általános típust.
Javítsa ki a típushibát a Record<> segítségével
A legjobb példa ennek az új operátornak a bemutatására egy „Record”-típust használ, ahol az értékek típusai eltérhetnek.
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();
Mint látható, az új kód lehetővé teszi az adott kulcs érvényes típusának helyes következtetését. Ez a TypeScript 4.9 előtt nem lenne lehetséges. A fordító kifogásolja, hogy az érték karakterlánc vagy szám típusú lehet, míg most a fordító helyesen következtet az adott típusra.
Tulajdonságnév kényszer
Az új operátort arra is használhatjuk, hogy utasítsuk a fordítót, hogy rendben van, ha egy készlet csak néhány megadott kulcsot tartalmaz, de másokat nem.
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>>;
További példák
A részletes leírásokkal rendelkező példák teljes listájához erősen ajánlom ennek a funkciónak a Githubon található eredeti kiadását, ahol a szerző számos használati esetet ír le (link a mellékletben is).