Ich möchte ein TypeScript-Enum-Objekt durchlaufen und den Namen jedes aufgezählten Symbols erhalten, zum Beispiel: enum myEnum { entry1, entry2 }
for (var entry in myEnum) {
// Verwende den Namen des Eintrags hier, z.B. "entry1"
}
Ich möchte ein TypeScript-Enum-Objekt durchlaufen und den Namen jedes aufgezählten Symbols erhalten, zum Beispiel: enum myEnum { entry1, entry2 }
for (var entry in myEnum) {
// Verwende den Namen des Eintrags hier, z.B. "entry1"
}
Es scheint, dass keine der Antworten hier mit String-Enums im strict
-Modus funktionieren wird.
Betrachten Sie das Enum als:
enum AnimalEnum {
dog = "dog", cat = "cat", mouse = "mouse"
}
Der Zugriff darauf mit AnimalEnum["dog"]
kann zu einem Fehler führen wie:
Element hat implizit den Typ 'any', weil der Ausdruck vom Typ 'any' nicht zum Indizieren des Typs 'typeof AnimalEnum' verwendet werden kann. ts(7053)
.
Richtige Lösung für diesen Fall, schreiben Sie es als:
AnimalEnum["dog" as keyof typeof AnimalEnum]
Ab TypeScript 2.4 können enums Zeichenfolgeninitialisierer enthalten https://www.typescriptlang.org/docs/handbook/release-notes/typescript-2-4.html
Dies ermöglicht es dir, folgendes zu schreiben:
enum Order {
ONE = "Erster",
TWO = "Zweiter"
}
console.log(`Eins ist ${Order.ONE.toString()}`);
und diese Ausgabe zu erhalten:
Eins ist Erster
Mit der aktuellen TypeScript-Version 1.8.9 verwende ich typisierte Enums:
export enum Option {
OPTION1 = 'das ist Option 1',
OPTION2 = 'das ist Option 2'
}
was zu diesem Javascript-Objekt führt:
Option = {
"OPTION1": "das ist Option 1",
"OPTION2": "das ist Option 2",
"das ist Option 1": "OPTION1",
"das ist Option 2": "OPTION2"
}
also muss ich durch Schlüssel und Werte abfragen und nur Werte zurückgeben:
let optionNames: Array = [];
for (let enumValue in Option) {
let optionNameLength = optionNames.length;
if (optionNameLength === 0) {
this.optionNames.push([enumValue, Option[enumValue]]);
} else {
if (this.optionNames[optionNameLength - 1][1] !== enumValue) {
this.optionNames.push([enumValue, Option[enumValue]]);
}
}
}
Und ich erhalte die Optionschlüssel in einem Array:
optionNames = [ "OPTION1", "OPTION2" ];
Kurz gesagt
wenn Ihr enum
wie folgt aussieht:
export enum Colors1 {
Red = 1,
Green = 2,
Blue = 3
}
um spezifischen Text und Wert zu erhalten:
console.log(Colors1.Red); // 1
console.log(Colors1[Colors1.Red]); // Rot
um eine Liste von Werten und Texten zu erhalten:
public getTextAndValues(e: { [s: number]: string }) {
for (const enumMember in e) {
if (parseInt(enumMember, 10) >= 0) {
console.log(e[enumMember]) // Wert, wie 1,2,3
console.log(parseInt(enumMember, 10)) // Text, wie Rot,Grün,Blau
}
}
}
this.getTextAndValues(Colors1)
wenn Ihr enum
wie folgt aussieht:
export enum Colors2 {
Red = "Rot",
Green = "Grün",
Blue = "Blau"
}
um spezifischen Text und Wert zu erhalten:
console.log(Colors2.Red); // Rot
console.log(Colors2["Red"]); // Rot
um eine Liste von Werten und Texten zu erhalten:
public getTextAndValues(e: { [s: string]: string }) {
for (const enumMember in e) {
console.log(e[enumMember]);// Wert, wie Rot,Grün,Blau
console.log(enumMember); // Text, wie Rot,Grün,Blau
}
}
this.getTextAndValues(Colors2)
CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.