Sobes.tech
Middle

В чём проблема использования enum в TypeScript при компиляции в JavaScript? Чем можно заменить enum?

sobes.tech MI

Válasz az MI-től

A TypeScript-ben az enumok használatának problémája az, hogy a TypeScript enumokat elég nagy kódra fordítja, amely egy kétirányú leképezést (szám ↔ szöveg) tartalmazó objektumot hoz létre. Ez növeli a végső csomag méretét, és nem kívánt mellékhatásokat okozhat a tree-shaking során.

Ezenkívül a TypeScript enum egy speciális konstrukció, amely nem létezik a tiszta JavaScriptben, így megnehezíti más eszközökkel és könyvtárakkal való integrációját.

Az enum helyett gyakran ajánlott a következőket használni:

  • Állandókkal ellátott objektumok (const objects) as const típussal, ami lehetővé teszi a literál típusok elérését és könnyebb kódot eredményez:
const Colors = {
  Red: "RED",
  Green: "GREEN",
  Blue: "BLUE"
} as const;

type Colors = typeof Colors[keyof typeof Colors];
  • Szöveg literál típusok uniója, ami szigorú típusosságot biztosít extra kód nélkül:
type Colors = "RED" | "GREEN" | "BLUE";

Ez a megközelítés csökkenti a fordított kód méretét és javítja az olvashatóságot.