typescriptのObjectのKeyを繰り返したくない。
起こったこと
以下のDataMapのようなオブジェクトを作るとして、Keyがkey1
,key2
,key3
と繰り返し記載しているのがよろしくない。(①のパターン)
keyをstringとする場合、key1,key2,key3以外のプロパティ名を持つことが出来てしまい、よろしくない(②のパターン)
interface Data { // 省略 } interface DataMap { // ① key1: Data, key2: Data, key3: Data // 繰り返していてプログラミングっぽくない } interface DataMap { // ② [key: string]: Data, // key4も宣言できちゃう }
typeとinを使う
interface Data { // 省略 } type DataKey = "key1" | "key2" | "key3"; // keyの入る文字列を制限 interface DataMap { [key in DataKey] : Data; // inを使ってあげる }