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

后端 未结 6 1812
离开以前
离开以前 2020-12-03 16:57

I\'m trying to use the following pattern:

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

interface OptionRequirement {
  someBool: bo         


        
6条回答
  •  时光说笑
    2020-12-03 17:19

    The simplest solution is to use Record

    type OptionRequirements = Record
    

    You can also implement it yourself as:

    type OptionRequirements = {
      [key in Options]: OptionRequirement;
    }
    

    This construct is only available to type, but not interface.

    The problem in your definition is saying the key of your interface should be of type Options, where Options is an enum, not a string, number, or symbol.

    The key in Options means "for those specific keys that's in the union type Options".

    type alias is more flexible and powerful than interface.

    If your type does not need to be used in class, choose type over interface.

提交回复
热议问题