Typescript-type for flere enum


Jeg har flere enum i appen min

enum HondaModels {
   Accord = 'Accord',
   ...
}
enum ToytaModels {
   Camry = 'Camry',
   ...
}

I koden min sjekker jeg om en bilmodell som blir sendt til meg er en Honda eller Toyota.

Jeg vil gjerne erklære en type som enten er HondaModels eller ToyotaModels

Hvis jeg prøver dette, får jeg en feil

 type modelTypes: HondaModels || ToyotaModels

finnes det en bedre tilnærming til å ha en tilpasset type som er en av flere enum?

Svar #1

Jeg ville også unngå string-enums. Å bruke diskriminerte unions er mye bedre fordi enums er sterkt typet.

const HondaModels = {
  Accord: "Accord",
} as const;
type HondaModels = typeof HondaModels[keyof typeof HondaModels];

const ToyotaModels = {
  Camry: "Camry",
} as const;
type ToyotaModels = typeof ToyotaModels[keyof typeof ToyotaModels];

type modelTypes = HondaModels | ToyotaModels;

Svar #2

Du har en syntaksfeil

enum HondaModels {
   Accord = 'Accord',
}
enum ToytaModels {
   Camry = 'Camry',
}

type modelTypes =  typeof HondaModels | typeof ToytaModels

// Then use it like this
let abc: modelTypes = HondaModels

takk til Aluan Haddad for den forbedrede løsningen

Relaterte artikler