从两个联合/枚举计算类型

时间:2019-04-05 13:36:28

标签: typescript

编辑:好的,看来我下面发布的代码可以完美运行,所以还有其他事情发生。嗯...

我试图从两个枚举或联合类型中指定一个类型,但是当我收到错误消息

对象文字只能指定已知的属性,而'x'在类型'y'中不存在

我认为问题可能出在使用枚举而不是联合类型,但是我也没有运气。同样,更改接口并使用[context in keyof uiContexts]并没有带来任何乐趣。我认为这里有些基本误会。

所以我想为各种不同的程序状态定义输入。

type inputs = 'up' | 'down' | 'left' | 'right'

type uiContexts = 'mainMenu' | 'subMenu'

class Parser {
  private contexts: {[context in uiContexts]: {[i in inputs]: () => void}} = {
    mainMenu: {
      up: () => {},
      down: () => {},
      left: () => {},
      right: () => {},
    },
    subMenu: {
      up: () => {},
      down: () => {},
      left: () => {},
      right: () => {},
    },
  }
}

预期:类型定义{[context in uiContexts]: [i in inputs]: () => void}以适合给定的数据。

实际:编译错误Object literal may only specify known properties, and 'subMenu' does not exist in type '{ mainMenu: { up: () => void; down: () => void; left: () => void; right: () => void; }

0 个答案:

没有答案