title: Better syntax to update nested objects on redux
body: <p>Given a reducer example like the following</p>
  
  <pre><code>_({
    expandAbility: (state, a: { which: string }) =&gt; ({
      ...state,
      report: state.report &amp;&amp; {
        waitingForIt: false,
        content: state.report.content &amp;&amp; {
          ...state.report.content,
          interaction: {
            expandAbilities: !state.report.content.interaction.expandAbilities.contains(a.which)
              ? state.report.content.interaction.expandAbilities.add(a.which)
              : state.report.content.interaction.expandAbilities.remove(a.which)
          }
        }
      }
    }),
  })
  </code></pre>
  
  <p>(state type given below just for question context purposes)</p>
  
  <pre><code>const initialState = {
    report: undefined as
      | {
          waitingForIt?: boolean
          content?: {
            supportedFightIds: number[]
            deathCut: number
            reportInfo: any
            deathsFull: any
            deathsByPlayer: any
            deathsByAbility: any
            interaction: {
              expandAbilities: Set&lt;string&gt;
            }
          }
        }
      | undefined,
    error: undefined as Error | undefined
  }
  </code></pre>
  
  <p>Is there any kind of trick or "flavor-of-the-moment" library which would allow me to write a reducer update operation like <code>expandAbility</code> in a shorter way? (besides maybe creating some <code>vars</code> to reference inner paths)</p>