インデックスシグネチャパラメータ型はユニオン型にできません。代わりにマップされたオブジェクト型の使用を検討してください。質問する

インデックスシグネチャパラメータ型はユニオン型にできません。代わりにマップされたオブジェクト型の使用を検討してください。質問する

私は次のパターンを使用しようとしています:

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

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

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

これは非常に簡単なように思えますが、次のエラーが発生します。

インデックス シグネチャ パラメータ タイプはユニオン タイプにできません。代わりにマップされたオブジェクト タイプの使用を検討してください。

何が間違っているのでしょうか?

ベストアンサー1

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演算子の詳細

おすすめ記事