typescript - Feil ved innstilling av initial medlemsverdi i et enum-objekt fra lokal variabel


Typescript-eksempel i lekeplassen her.

Jeg prøver å sette den opprinnelige medlemverdien til et enum-objekt, og den opprinnelige verdien kommer fra en konstant (numerisk). I dette tilfellet gir alle følgende verdier en TS-feil: "Enum-medlem må ha initialiserer."

Er dette ikke tillatt? Hvorfor er ikke de følgende medlemmene satt til det foregående enum-medlemmet pluss én?

For korthets skyld her er koden, men du kan se den i lekeplasslenken ovenfor:

const firstValue: number = 100;
enum Animal {
    Lion = firstValue,
    Tiger,  // gives error
    Horse,  // gives error
    Fish    // gives error
}

Svar #1

Dette er faktisk ikke tillatt for øyeblikket - når man følger en annen enum-medlem med en initializer, øker et enum-medlem bare automatisk når den beregnede verdien er statisk kjent. Akkurat nå inkluderer det bare numeriske literaler og andre enum-medlemmer hvis verdier er statisk kjent, men analysen inkluderer for øyeblikket ikke const-deklarasjoner.

Du kunne omgå dette med

enum FirstValue {
    firstValue = 100
}

og bruk FirstValue.firstValue i stedet for firstValue.

Relaterte artikler