考虑以下枚举:
enum Numbers {
ONE=1,
TWO=2
}
以下接口定义会引发编译时错误。
interface Config {
[n in Numbers]: string;
}
<块引用>
但是如果我使用类型别名:
type Config = {
[n in Numbers]: string;
}
或者在定义中更深地移动映射类型:
interface Config {
a: {
[n in Numbers]: string;
};
}
它编译得很好。
那么,为什么接口的顶级属性不能是映射类型?
PS:在 typescript playground 上使用 v4.2.3。
答案 0 :(得分:3)
TypeScript 目前不支持使用接口执行此操作——我不确定是否有任何为什么不支持的原因,除了“它还没有实现”。
幸运的是,这似乎是通过此 PR 的 TS4.4 路线图:https://github.com/microsoft/TypeScript/pull/26797
编辑:如以下评论中所述,上述 PR 并未完全涵盖原始问题中所需的行为。