枚举和界面中的自定义键/值类型

时间:2018-12-17 17:08:58

标签: typescript

我正在寻找一种自定义类型,该类型将允许我使用来自枚举的键创建对象,并且所有这些都与特定接口的值匹配。有没有一种简单的方法可以在下面创建Custom类型?

enum MyKeys {
  ALPHA = 'ALPHA',
  BETA = 'BETA',
  GAMMA = 'GAMMA',
}

interface MyValues {
  in: any[];
  out: any[];
}

type Example = Custom<MyKeys, MyValues>

应针对:

{
  [MyKeys.ALPHA]: {
    in: []
    out: []
  },
  [MyKeys.BETA]: {
    in: []
    out: []
  },
  [MyKeys.GAMMA]: {
    in: []
    out: []
  }
}

1 个答案:

答案 0 :(得分:2)

您只是从the standard library中寻找Record<K, V>类型。这是mapped type,其中值类型不依赖于键。在TypeScript 2.6中,added是在TypeScript中使用基于字符串的枚举作为键类型的功能。

让我们看看它的作用:

type Example = Record<MyKeys, MyValues>
const ex: Example = {
  [MyKeys.ALPHA]: {
    in: [],
    out: []
  },
  [MyKeys.BETA]: {
    in: [],
    out: []
  },
  [MyKeys.GAMMA]: {
    in: [],
    out: []
  }
}; // works

看起来不错。希望能有所帮助;祝你好运。