【发布时间】:2019-04-21 14:13:13
【问题描述】:
我有两个具有相同键名的枚举,我希望能够使用一个枚举中的值从第二个枚举中获取值。
例如,将服务器错误转换为应用程序中的客户端错误:
enum serverErrors {
first = "server error 1",
second = "server error 2",
third = "server error 3"
}
enum clientErrors {
first = "client error 1",
second = "client error 2",
third = "client error 3"
}
目前我们正在使用这样的函数:
function translate(s: string) {
switch (s) {
case serverErrors.first:
return clientErrors.first;
/// ...
}
}
我希望能够执行与上述类似的操作,而无需手动指定每个键应转换为什么 - 它应该根据键的名称发生。
我试过了:
type translator = {
// Error: Type 'P' cannot be used to index type 'clientErrors'.
[P in keyof typeof serverErrors]: clientErrors[P];
};
虽然我不确定如何从上面获取字符串值,即使它确实有效。
我希望这段代码可以工作:
const serverError = serverErrors.first;
const clientError = enumTranslator(serverError); // === clientError.first
【问题讨论】:
标签: javascript typescript enums