読者です 読者をやめる 読者になる 読者になる

BattleProgrammerShibata

ある日は誰かと戦い、ある日は何かと戦い、そしてある日は自分と戦うのだろう、そういう生き物。

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

ES2015 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
})