![](/img/trans.png)
[英]How to check if given enum is string based or numeric in Typescript
[英]How to have alternative string definition for numeric enum in typescript
我有一個像下面這樣的數字枚舉。
enum Rating {
Unknown = 0,
One,
Two,
Three,
Four
}
當我訪問像下面這樣的枚舉字符串時,我需要獲取枚舉的替代字符串值。
var stringVal = Rating[Rating.One];
上面的行應該給我“評級為一”而不是一。
我需要堅持使用數字枚舉,不能使用字符串枚舉。 一旦我能想到的解決方案是使用如下所示的字符串數組。
const stringRating = ["Unknown Rating", "Rating One", "Rating is Two", "Rating is Three", "Rating is Four"];
export function toString(rating: Rating): string {
return stringValues[rating];
但是有沒有更好的方法可以在打字稿中實現這一點?
我期待像下面這樣的枚舉在 c# 中的描述屬性
public enum MyEnum
{
[Description("value 1")]
Value1,
[Description("value 2")]
Value2,
[Description("value 3")]
Value3
}
您可以將枚舉字符串存儲在Map
對象中:
ratingStrings = new Map<Rating,string>([
[Rating.Unknown, "Unknown Rating"],
[Rating.One, "Rating One"],
[Rating.Two, "Rating is Two"],
[Rating.Three, "Rating is Three"],
[Rating.Four, "Rating is Four"],
]);
doSomething() {
let str = this.ratingStrings.get(Rating.Unknown);
...
}
或者,如果所有枚舉值的字符串格式都相同,您可以使用如下函數:
ratingToString(rating: Rating): string {
return `Rating ${Rating[rating]}`;
}
doSomething() {
let str = this.ratingToString(Rating.Unknown);
...
}
有關這兩種技術的演示,請參閱此 stackblitz 。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.