Kurz gesagt, es ist unmöglich, aber ich hasse erzwungene Behauptungen mit as
. Das ist meine Empfehlung.
enum Color {
Rot,
Grün
}
Erstellen Sie eine Map, optimieren Sie jedoch die Erstellung so, dass Sie dies nicht oft tun.
const reverse = new Map(Object.values(Color).map(item => [item.toString(), item]))
Werfen Sie jetzt diese Funktion weg und verwenden Sie einfach die reverseMap
, um das Farben-Enum zu erhalten.
const colorText: string = "Rot"
const colorEnum: Color | undefined = reverse.get(colorText)
Beachten Sie das potenzielle undefined
, da Sie einen Text in ein Enum konvertieren, müssen Sie dies explizit überprüfen. Diese Lösung ermöglicht es Ihnen auch, standardmäßig einen Wert bereitzustellen, indem Sie
const colorWithFallback: Color = reverse.get("Art von Gelb") || Color.Rot