jsのcaseには中括弧をつけるべき
React Reduxで開発してて、Reducerに以下のようなコードを書いてたら case B
の hoge
で怒られました。
switch (type) { case A: const { hoge } = state; return { ...state, hoge: hoge + 1, }; case B: const { hoge } = state; return { ...state, hoge: hoge + 2, }; default: return state; }
エラーメッセージは以下のように言ってます。
Duplicate declaration "hoge" (null)
どうやら hoge
が二重定義されてるっぽいです。
以下のように括弧をつければ解決。
caseを括弧で閉じてやらないとスコープが制限されないんですね。。。
switch (type) { case A: { const { hoge } = state; return { ...state, hoge: hoge + 1, }; } case B: { const { hoge } = state; return { ...state, hoge: hoge + 2, }; } default: { return state; } }