ES2015 Arrow functions で Object を返却するとき return の記述を省略する #JavaScript

結論あるいは動くコード

const setThemeName = (themeName) => ({
  type: 'SET_THEME',
  themeName: themeName
})

↑ が出来上がるまで

Object を返却するメソッドを書くとき、例えば次のようなコードを書きます。

const setThemeName = (themeName) => {
  return {
    type: 'SET_THEME',
    themeName: themeName
  }
}

このコードは動きますが、せっかく Arrow functions を使っているので、return を省略したいところですね。 なので次のように書き直してみました。

const setThemeName = (themeName) => {
  type: 'SET_THEME',
  themeName: themeName
}

残念ながらこれはダメです。SyntaxError になります。
(args) => { ... } という記述をしてしまったので、{ ... } は Object ではなく、処理が記述された関数本体だと認識するためです。

関数本体ではないことを伝えるためには、括弧を使って ({ ... }) のようにしてあげる必要があります。今回のように return の記述を省略しながら Object を返却したいなら、次のように書きます。

const setThemeName = (themeName) => ({
  type: 'SET_THEME',
  themeName: themeName
})