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

标签 javascript typescript

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

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

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

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

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

An index signature parameter type cannot be a union type. Consider using a mapped object type instead.

我做错了什么?

最佳答案

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

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

关于javascript - 索引签名参数类型不能是联合类型。考虑改用映射对象类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54438012/

相关文章:

javascript - 如何使用换行符 (\n) 选项在 javascript 中编写 HTML

javascript - 如何在单击按钮 angular2 时复制输入字段

node.js - Nodejs + Express : Cors is not a function

javascript - 通过数组在 Ionic/Angular ngFor 中遇到问题

reactjs - 类型 '(props: Props) => Element[]' 不可分配给类型 'FunctionComponent<Props>'

javascript - .on ('click' ) 功能在更新到 jQuery 3.3.1 后不工作

javascript - 加载特定网站时自动运行我的 Chrome 扩展程序

javascript - Modal 上的 Controller 不适用于 AngularJS

Angular 4中的javascript

javascript - TS2307 : Cannot find module 'angular'