例如,如果我从服务器获取字符串值。我定义了带有字符串值的枚举类型。如何在打字稿中将字符串值转换为枚举类型?
export enum ToolType {
ORA= 'orange', ST= 'stone' , DP= 'dupe'
}
const stringFromServer='orange';
// need TO transfer it to ToolType.ORA
服务器发送枚举时,它实际上发送的数字代表该枚举,而不是其类型。
您可以做这样的事情:
type ToolType = 'Orange' | 'Stone' | 'Dupe';
const stringFromServer: ToolType = 'Orange';
您需要客户端中的某种方式来知道您的枚举表示形式的数量。
您可以尝试修改服务器,使他向您发送枚举的字符串名称,并执行我上面编写的代码。
您可以编写一个自定义方法来根据传入的值提取枚举常量:
getEnumType(val) {
return Object.keys(ToolType).filter(e => ToolType[e] === val);
}
现在使用:调用它]
console.log(this.getEnumType(stringFromServer));
此方法的好处是,即使传入的值不存在,也不会收到类型声明错误。
嗨,如果您要获得ORA,如果stringFromServer ='orange'或ST,如果stringFromServer ='stone',则>
然后您可以尝试这个