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: 'さしすせそ',
}
これでオブジェクトを作るときに他の型を利用してキーを設定することができました。