🌟

TCA v1.4での変更点

2023/12/07に公開

https://pointfreeco.github.io/swift-composable-architecture/main/documentation/composablearchitecture/migratingto1.4/

  • @Reducerマクロ爆誕
    • CaseKeyPath使うようになった
      • store.scope(state: \.$alert, action: \.alert)ができる
  • テストコードでreceiveのときに.successを比較しないようになった
    • ActionにEqutableが必要なくなった
      • TaskResultが必要なくなった
  • IdentifiedActionOfが爆誕
    • case row(id: State.ID, action: Action)と書く必要がなくなった

このバージョンの主にやりたいこと

  • CaseKeyPathを使うことでStateとActionを併記する際にKeyPathスタイルに統一したい
    • もともとStateはKeyPath、ActionはCasePathとなっており微妙にスタイルが違っていた
    • CaseKeyPathを使うことでスタイルを統一できるしCasePathの黒魔術的な解決をしなくても良くなる(おそらく実行時パフォーマンスを懸念している)

テストコードでreceiveのときに.successを比較しないようになった

そもそもEqutableにするのはテストのためだった。
ActionをEqutableにしなくて良くなったことでTaskResultも必要がなくなりResultをそのまま使っても良くなった。

さらにEqutableでないことでVoidでも問題がなくなった。つまりcase receive(Result<Void, NSError>)でもいい。

Discussion