我找到了这个关于如何将字符串转换为打字稿枚举的好答案。在此基础上,我编写了这个函数
enum Color { Red='red', Green='green' }
function mapColorString(strColor: string): Color {
const colorKey = strColor as keyof typeof Color
return Color[colorKey]
}
但是现在当我尝试使它通用时,
function getEnumFromString<T>(str: string): T {
const enumKey = str as keyof T
return T[enumKey]
}
我在return语句中得到错误:< code >“T”只引用一个类型,但在这里被用作值。
我想使这个泛型,因为我有许多枚举需要根据它们的字符串值生成,并且我不想为每个枚举使用单独的方法。
这个解决方案似乎对我很有效:
/**
* Converts a string value to an enum entry
* @param obj the enum class
* @param str string to convert
* @return enum value or undefined
*/
static stringToEnum<T>(obj: T, str: string) : T[keyof T]
{
return Object.values(obj).includes(str as keyof T) ? str as unknown as T[keyof T] : undefined;
}
使用本机铸造的不同实现,通过未知感觉不稳定。
T
只是枚举的类型。类型将被擦除,并且在运行时不存在。您需要传入表示枚举的对象:
enum Color { Red='red', Green='green' }
function getEnumFromString<T, K extends string>(enumObj: { [P in K]: T },str: string): T {
const enumKey = str as K
return enumObj[enumKey]
}
getEnumFromString(Color, 'Red');
K
将表示枚举的键,T
将是枚举值的类型
当我传递枚举定义时,我可以实现这一点:
enum Color { Red='red', Green='green' }
function getEnumFromString<T>(type: T, str: string): T[keyof T] {
const casted = str as keyof T;
return type[casted];
}
const bar = getEnumFromString(Color, 'Red');
我想用Typescript写这样的东西: 并按如下方式使用: 它会返回的地方 上面的函数按预期工作…但是输入抛出错误。对于
本文向大家介绍Java将枚举转换为字符串,包括了Java将枚举转换为字符串的使用技巧和注意事项,需要的朋友参考一下 示例 有时您想将枚举转换为String,有两种方法可以实现。 假设我们有: 那么,我们如何将类似的东西转换Fruit.APPLE为"APPLE"? 使用转换 name() name()是一个内部方法,enum该方法返回String枚举的表示形式,返回值精确String表示枚举值的定义
问题内容: 目前,我们的代码存在一种情况,即我们在Java层中使用枚举,该枚举通过以下构造函数存储id和“显示值”: 我们希望打字稿中的某些内容能够与之匹配,以便以有意义的方式显示状态以执行逻辑并在前端向用户显示值。这可能吗?有没有更好的方法来解决这个问题?我们希望避免使用诸如status.id()= 1或status.name()=’Active’这样的逻辑,从而推动枚举。 谢谢 问题答案: T
我有一个typescript中的枚举,它有20个字段。我有一个UI应用程序,用户可以将信息放在一些自由文本中(例如,让我们说用户喜欢的颜色)。我的要求是获取这些颜色信息并致电中层服务。midtier服务将Color定义为Enum,与UI枚举定义保持同步。我需要将用户输入文本转换为枚举(在前端),因为在构建过程中会引发编译问题。我没有找到执行转换的方法(例如,从用户输入字符串到特定枚举元素)。任何指
我有一个枚举文件,在其中我为PaymentTypes定义了一个对象: 这样我就有了可以使用的东西:
我正在尝试将Typecript枚举值转换为数字,以便在我的下拉列表中显示枚举字符串值,但在提交按钮上,传递的是该值而不是字符串。枚举设置如下。 到目前为止,我已经能够控制台.log对象的键(字符串)(例如 Value),但我想做的是在发出对象后传递 0(数字)值。 我该怎么做?