【发布时间】:2021-08-13 03:59:15
【问题描述】:
考虑以下枚举:
enum Numbers {
ONE=1,
TWO=2
}
以下接口定义引发编译时错误。
interface Config {
[n in Numbers]: string;
}
- 接口中的计算属性名称必须引用类型为文字类型或“唯一符号”类型的表达式。
- 计算属性名称的类型必须为“字符串”、“数字”、“符号”或“任意”。
- 找不到名称“n”。
但是如果我使用类型别名:
type Config = {
[n in Numbers]: string;
}
或者将映射类型移到定义的更深处:
interface Config {
a: {
[n in Numbers]: string;
};
}
它编译得很好。
那么,为什么接口的顶级属性不能是映射类型?
PS:typescript playground 使用 v4.2.3。
【问题讨论】:
标签: typescript