如何将字符串映射到Typescript中具有字符串值的已知枚举?

问题描述 投票:0回答:3

例如,如果我从服务器获取字符串值。我定义了带有字符串值的枚举类型。如何在打字稿中将字符串值转换为枚举类型?

export enum ToolType {
  ORA= 'orange', ST= 'stone' , DP= 'dupe'
}

const stringFromServer='orange';
// need TO transfer it  to ToolType.ORA
typescript enums
3个回答
0
投票

服务器发送枚举时,它实际上发送的数字代表该枚举,而不是其类型。

您可以做这样的事情:

type ToolType = 'Orange' | 'Stone' | 'Dupe';

const stringFromServer: ToolType = 'Orange';

您需要客户端中的某种方式来知道您的枚举表示形式的数量。

您可以尝试修改服务器,使他向您发送枚举的字符串名称,并执行我上面编写的代码。


0
投票

您可以编写一个自定义方法来根据传入的值提取枚举常量:

getEnumType(val) {
  return Object.keys(ToolType).filter(e => ToolType[e] === val);
}

现在使用:调用它]

console.log(this.getEnumType(stringFromServer));

此方法的好处是,即使传入的值不存在,也不会收到类型声明错误。


0
投票

嗨,如果您要获得ORA,如果stringFromServer ='orange'或ST,如果stringFromServer ='stone',则>

然后您可以尝试这个

© www.soinside.com 2019 - 2024. All rights reserved.