【发布时间】:2017-08-19 22:23:28
【问题描述】:
我有以下方法将枚举的字符串实例转换为对象上相应的枚举成员:
function transformEnum<TBase>(base: TBase, member: keyof TBase, enumInstance: any) {
base[member] = enumInstance[base[member]];
}
它是这样称呼的:
transformEnum(result, "day", DayOfWeek);
有没有办法输入enumInstance 变量?打字不一定是完美的,但至少在某种程度上限制它会很好。
我也试过了
function transform<T>(get: () => T, set: (x: T) => void, enumInstance: T) {
set((enumInstance as any)[get()]);
}
但是当我这样称呼它时:
transform<DayOfWeek>(() => result.day, (x) => { result.day = x; }, DayOfWeek);
我明白了
[ts]“typeof DayOfWeek”类型的参数不可分配给“DayOfWeek”类型的参数。
【问题讨论】:
-
请检查这是否适合您:stackoverflow.com/questions/17380845/…
-
@BalajiV 如果您阅读我的代码示例,您会发现这就是我正在做的事情。问题不是如何进行转换,而是如何键入函数参数。
标签: typescript types enums