Sobes.tech
Middle

Mis on probleem kasutades enum TypeScriptis, kui see kompileeritakse JavaScriptiks? Millega saab enum asendada?

sobes.tech AI

Vastus AI-lt

Probleem kasutades enum TypeScriptis, kui see kompileeritakse JavaScriptiks, on see, et TypeScripti enumid kompileeritakse üsna suureks koodiks, mis loob objekti kahe suunaga kaardistusega (arv ↔ string). See suurendab lõpliku paketi suurust ja võib põhjustada soovimatuid kõrvaltoimeid tree-shaking'i ajal.

Lisaks on enum TypeScriptis eriline konstruktsioon, mis ei eksisteeri puhtas JavaScriptis, mis muudab selle integreerimise teiste tööriistade ja teekidega keerulisemaks.

Sageli soovitatakse kasutada:

  • Konstantidega objekte (const objects) tüübiga as const, mis võimaldab saada literaaltüüpe ja kergemat koodi:
const Colors = {
  Red: "RED",
  Green: "GREEN",
  Blue: "BLUE"
} as const;

type Colors = typeof Colors[keyof typeof Colors];
  • String literaalide uniooni tüüpe, mis pakuvad ranget tüübitamist ilma lisakoodita:
type Colors = "RED" | "GREEN" | "BLUE";

Selline lähenemine vähendab kompileeritud koodi suurust ja parandab loetavust.