オブジェクトの key を型で指定したい
type Side = 'send' | 'receive'
function sideCharObj(): { [key: Side]: string } {
return {
send: '発',
receive: '受'
}
},
{ [key: string]: string }
のように書けそうだが、
これだと下記のエラーが出る
An index signature parameter type cannot be a union type. Consider using a mapped object type instead.
Mapped types で key の型を指定
type Side = 'send' | 'receive'
function sideCharObj(): { [key in Side]: string } {
return {
send: '発',
receive: '受'
}
}
{ [key: Side]: string }
{ [key in Side]: string }
参考
こちらに、Mapped types についての詳しい記事がありました
https://qiita.com/Quramy/items/e27a7756170d06bef22a#mapped-types