可以使用哪个集合在两个方向上映射键值对?

时间:2018-08-29 14:47:12

标签: typescript collections key-value

我正在尝试设置国家(地区)代码集合。因为我的前端显示了它,所以我想显示例如“ Austria”,但是在将其发送到后端时,我只想发送“ A”,因为这是存储方式。理想情况下,它看起来应该像这样:

CountryCodes = {
  A: "Austria",
  D: "Germany",
}

console.log(CountryCodes["A"]); // -> "Austria"
console.log(CountryCodes["Austria"]); // -> "A"

我以为我可以使用一个枚举

enum MyEnum {
  first = 0,
  second = 1,
}

成为

MyEnum = {
  0 = "first",
  1 = "second"
  first = 0,
  second = 1,
}

从打字稿转换为javascript时。但是,如果枚举的值不是数字,则不是这种情况。

我不确定要使用哪种集合,因为我不想为每个国家/地区代码添加两个keyValuePair。您有解决该问题的想法吗?我在这里错过了一个非常明显的解决方案吗?

1 个答案:

答案 0 :(得分:0)

我会采取略有不同的方法。您可以将您的枚举创建为字符串枚举:

export enum MyEnum {
    A = "Australia",
    D = "Germany"
}

因此,当您渲染<>MyEnum.A</>时,将渲染澳大利亚。

然后您可以安装enum-values并只需执行以下操作:

const val = EnumValues.getNameFromValue(MyEnum, 'Australia')

这样val = A,然后您就可以将其发送到后端。

希望这会有所帮助。