编辑:好的,看来我下面发布的代码可以完美运行,所以还有其他事情发生。嗯...
我试图从两个枚举或联合类型中指定一个类型,但是当我收到错误消息
对象文字只能指定已知的属性,而'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; }