【Typescript】Interface や Type をオブジェクトの型のキー(key)として指定する

  • Typescript

Interface や Type で型定義をしたあとに、その定義をオブジェクトのキーとして設定する方法です。

Type で定義した場合

以下のような type があるとします。

type MyType = 'hoge' | 'fuga' | 'piyo'

これらをオブジェクトのキーとして設定するには、key inを使います。例としてキーはMykey、値は文字列のオブジェクトを作ると下記のようになります。

const myObj: {
  [key in MyType]: string
} = {
  hoge: 'あいうえお',
  fuga: 'かきくけこ',
  piyo: 'さしすせそ',
}

Interface で定義した場合

以下のような interface があるとします。例なので全て any 型に指定しています。

interface MyInterface {
  hoge: any
  fuga: any
  piyo: any
}

ここからキーをオブジェクトのキーに割り当てるには、key in keyof ...を使います。

const myObj: {
  [key in keyof MyInterface]: string
} = {
  hoge: 'あいうえお',
  fuga: 'かきくけこ',
  piyo: 'さしすせそ',
}

これでオブジェクトを作るときに他の型を利用してキーを設定することができました。