簡體   English   中英

如何使用Typescript中的值創建和解析字符串枚舉

[英]How to create and parse string enums with values in Typescript

我知道使用Typescript創建字符串枚舉存在問題,即使在v2.4 +中,我也使用Typescript 2.8和Angular 6。

我想要一個枚舉,並從枚舉中自由獲取字符串值,並將字符串解析為枚舉。

所以假設我有這個枚舉:

export enum MyEnum{
  INIT = 'init-room',
  CLOSE = 'close-room'
}

該枚舉對與其余API進行通信很有用。 因此,從API到API,我必須發送字符串。 但是在應用程序內部,我想盡快將字符串從API轉換為枚舉。

所以我想具有解析和字符串化我的枚舉的功能。

我嘗試了這種方法,但是這行不通。

export function toString(type: MyEnum): string {
    return MyEnum[type];
}

export function parse(type: string): Mode {
    return MyEnum[type];
}

好吧,這並不奇怪,因為我想從這個枚舉中獲取value ,而不是MyEnum[type] -但我不知道該怎么做。

我知道將鍵轉換為值時會遇到問題,而將值轉換為鍵時有效。 因此,我需要任何干凈的代碼解決方案來實現我的目標。

也許嘗試獲得這樣的價值:

return MyEnum.type;

請嘗試以下操作:

enumValues(enumType:any):number[] {
    return Object.keys(enumType).map(k => enumType[k]).filter(v => typeof v === "number")
}

enumString(enumType:any, enumValue:any):string {
    return enumType[enumValue];
}

您可以安全地切換到常量。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM