[英]Reverse mapping string enum angular 4
我有一個字符串枚舉:
export enum TokenLength {
SIX = '6',
EIGHT = '8',
}
而且我需要獲取字符串“ SIX”或“ EIGHT”,以便反向映射此枚舉。 我已經嘗試了多種方法:
tokenLength = TokenLength;
for (var enumMember in this.tokenLength) {
console.log("enum member: ", enumMember); //result: enum member: SIX , enum member: EIGHT
}
for (var enumMember in this.tokenLength) {
console.log("enum member: ", this.tokenLength[enumMember]); //result: enum member: 6, enum member: 8
}
這似乎工作得很好,但是每當我執行以下操作時,它都將不起作用。
console.log(this.tokenLength['SIX']); //result: 6
console.log(this.tokenLength.SIX); //result: 6
console.log(this.tokenLength[this.tokenLength.SIX]); //result: undefined
console.log(this.tokenLength['6']); //result: undefined
console.log(this.tokenLength[0]); //result: undefined
我需要“未定義”的結果為“六”,我該怎么做? 提前致謝。
您可以查看打字稿文檔。 打字稿
enum Enum {
A
}
let a = Enum.A;
let nameOfA = Enum[a]; // "A"
為了使它以這種方式工作,您必須刪除枚舉中的引號:
enum TokenLength {
SIX = 6,
EIGHT = 8
}
希望能有所幫助
一個答案已經存在https://stackoverflow.com/a/18112157/7771064
for (var size in TokenLength) {
if (!parseInt(size))
console.log(size);
}
function getTokenLength(value: string): TokenLength | undefined {
const keys = Object.keys(TokenLength);
const values = keys.map(k => TokenLength[k as any]);
const index = values.indexOf(value);
return index > -1 ? TokenLength[index] as TokenLength: undefined;
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.