我有一个基于字符串的枚举(在TypeScript 2.4+中受支持)。将字符串转换为相应枚举值的最佳方法是什么(如果存在?)。如果它不存在,默认设置为一个值也可以。
export enum Theory {
RLJ = 'r + l = j',
WinterIsComing = 'winter is coming',
TyrionIsAarysSon = 'i buy it',
YoungGriffIsReal = 'doubtfull'
}我从以下几点开始,当然不会起作用。
function getTheory(theoryString: string): Theory {
let theory: Theory = Theory.RLJ;
if (theoryString in Theory) {
theory = theoryString as Theory;
}
return theory;
}一种可能可行的方法是创建枚举值到名称的映射,并执行反向查找,但似乎不应该这样做(或者TypeScript有更好的内置方法)。
发布于 2017-08-31 01:55:46
我认为你不能实现你想要的。我能给你的最好信息是这样的:
function isTheSameTheory(theoryString: string, t: Theory) {
return theoryString === t;
}或者这样(这是不安全的):
function toTheory(theoryString: string) {
return theoryString as Theory;
}https://stackoverflow.com/questions/45966849
复制相似问题