Wie erhalte ich die Namen (Schlüssel) von Enum-Werten in TypeScript?
Hallo! Ich bin neu in TypeScript und habe ein Problem bei der Arbeit mit Enums. Angenommen, ich habe folgendes Enum:
```typescript
enum Color {
Red = 1,
Green = 2,
Blue = 4
}
```
Ich möchte dynamisch eine Liste aller Namen (Schlüssel) dieses Enums erhalten, also ein Array von Strings: `["Red", "Green", "Blue"]`. Ich habe versucht, `Object.keys(Color)` zu verwenden, aber das Ergebnis ist nicht das, was ich erwarte. In der Konsole erscheinen auch Zahlen: `["1", "2", "4", "Red", "Green", "Blue"]`. Warum passiert das? Ist das ein Bug in TypeScript?
Ich brauche genau die Namen, um sie z.B. in einem Dropdown-Menü im UI anzuzeigen oder für die Validierung von Benutzereingaben. Wie mache ich das richtig? Gibt es eine eingebaute Funktion oder muss ich meine eigene schreiben? Ich wäre dankbar für eine ausführliche Erklärung mit Beispielen.
Außerdem interessiert mich, wie es sich mit numerischen und string Enums verhält – gibt es einen Unterschied im Ansatz? Vielen Dank im Voraus!
<<>>
Warum gibt Object.keys() Zahlen zurück?
Das ist kein Bug, sondern ein bekanntes Verhalten von TypeScript. Bei numerischen Enums erzeugt TypeScript eine bidirektionale Mapping-Tabelle, die sowohl die Zuordnung von Namen zu Werten als auch von Werten zu Namen ermöglicht. Daher enthält das von `Object.keys()` zurückgegebene Array sowohl die numerischen Schlüssel (als Strings) als auch die Namen. Dies dient der Abwärtskompatibilität und ermöglicht den Zugriff auf Enum-Werte über ihren numerischen Index.