Sobes.tech
Middle

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

sobes.tech AI

Odpoveď od AI

Problém používania enum v TypeScript pri kompilácii do JavaScript spočíva v tom, že TypeScript enumy sa kompilujú do pomerne veľkého kódu, ktorý vytvára objekt s obojsmerným mapovaním (číslo ↔ reťazec). To zvyšuje veľkosť výsledného balíka a môže spôsobovať nechcené vedľajšie účinky počas tree-shaking.

Okrem toho je enum v TypeScript špeciálna konštrukcia, ktorá v čistom JavaScripte neexistuje, čo sťažuje jeho integráciu s inými nástrojmi a knižnicami.

Namiesto enumov sa často odporúča používať:

  • Objekty s konštantami (const objects) s typom as const, čo umožňuje získať typy literálov a ľahší kód:
const Colors = {
  Red: "RED",
  Green: "GREEN",
  Blue: "BLUE"
} as const;

type Colors = typeof Colors[keyof typeof Colors];
  • Unie typov reťazcových literálov, čo poskytuje prísne typovanie bez zbytočného kódu:
type Colors = "RED" | "GREEN" | "BLUE";

Tento prístup znižuje veľkosť skompilovaného kódu a zlepšuje čitateľnosť.