Konverter TypeScript-enumerasjoner til strenger under bygging/kompilering


Jeg byttet nylig fra å bruke strenger i typene mine til å bruke enums, det vil si

export interface Dog {
  size: "SMALL" | "MEDIUM" | "BIG"
} 

blir

export enum SIZE {
  SMALL = "SMALL",
  MEDIUM = "MEDIUM",
  BIG = "BIG"
}

type Dog {
  size: SIZE
}

Men dette forårsaker problemer i prosjektet mitt nå. Jeg har en pakke kalt @MyApp/types som tidligere ble fjernet fra produksjonskoden når jeg bygde min dist-mappe. Med enums vedvarer det nå, dvs. denne koden er inkludert i min dist.

const types_1 = require("@MyApp/types");

// ...

types_1.SIZE.BIG

Finnes det en måte å fortelle TypeScript-kompilatoren å endre ovenstående til å simpelthen være

"BIG"

Så types-pakken er ikke inkludert i dist-bygget?

Svar #1

Som det er uttalt av @jonsharpe, kan du bruke const for opprettelse av enum-type. Se mitt eksempel:

interface Dog {
  size: SIZE
} 

 const enum SIZE {
  SMALL = "SMALL",
  MEDIUM = "MEDIUM",
  BIG = "BIG"
}


var dog:Dog = { size: SIZE.MEDIUM };