In Typescript bekomme ich eine string
Variable, die den Namen meiner definierten enum
enthält.Holen Sie sich Enum-Werte von enum name string
Wie kann ich jetzt alle Werte dieser Enumeration erhalten?
In Typescript bekomme ich eine string
Variable, die den Namen meiner definierten enum
enthält.Holen Sie sich Enum-Werte von enum name string
Wie kann ich jetzt alle Werte dieser Enumeration erhalten?
Typoskript Enum:
enum MyEnum {
First, Second
}
auf JavaScript-Objekt transpiled:
var MyEnum;
(function (MyEnum) {
MyEnum[MyEnum["First"] = 0] = "First";
MyEnum[MyEnum["Second"] = 1] = "Second";
})(MyEnum || (MyEnum = {}));
Sie enum
Instanz von window["EnumName"]
bekommen:
const MyEnumInstance = window["MyEnum"];
Weiter Sie mit Enum Elementwerte erhalten können :
const enumMemberValues: number[] = Object.keys(MyEnumInstance)
.map((k: any) => MyEnumInstance[k])
.filter((v: any) => typeof v === 'number').map(Number);
Und Enum Mitgliedernamen mit:
const enumMemberNames: string[] = Object.keys(MyEnumInstance)
.map((k: any) => MyEnumInstance[k])
.filter((v: any) => typeof v === 'string');
Siehe auch How to programmatically enumerate an enum type in Typescript 0.9.5?
Fenster [enumname] hat nicht funktioniert, vielleicht weil wir Namespaces verwenden. Aber "eval (enumname)" hat funktioniert. –
Als Alternative zu dem window
Ansatz, dass die anderen Antworten bieten, können Sie folgendes tun:
enum SomeEnum { A, B }
let enumValues:Array<string>= [];
for(let value in SomeEnum) {
if(typeof SomeEnum[value] === 'number') {
enumValues.push(value);
}
}
enumValues.forEach(v=> console.log(v))
//A
//B
könnten Sie Reflexion, etwas wie diesen Beitrag http://stackoverflow.com/questions/15338610/dynamically-loading-a-typescript-class-re verwenden Flection-for-typescript. Jedenfalls würde ich zuerst denken, ob das der richtige Weg ist, oder Sie können auf "normale" Weise darauf zugreifen. – iberbeu