索引签名参数类型不能是联合类型。考虑使用映射对象类型代替

2023-12-05

我正在尝试使用以下模式:

enum Option {
  ONE = 'one',
  TWO = 'two',
  THREE = 'three'
}

interface OptionRequirement {
  someBool: boolean;
  someString: string;
}

interface OptionRequirements {
  [key: Option]: OptionRequirement;
}

这对我来说似乎非常简单,但是我收到以下错误:

索引签名参数类型不能是联合类型。考虑改用映射对象类型。

我究竟做错了什么?


您可以使用 TS“in”运算符并执行以下操作:

enum Options {
  ONE = 'one',
  TWO = 'two',
  THREE = 'three',
}
interface OptionRequirement {
  someBool: boolean;
  someString: string;
}
type OptionRequirements = {
  [key in Options]: OptionRequirement; // Note the "in" operator.
}

有关 in 运算符的更多信息

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

索引签名参数类型不能是联合类型。考虑使用映射对象类型代替 的相关文章

随机推荐