TL;DR
複数の種類のエラーを、タグごとにまとめて処理する Effect の関数。Effect.catchTag を何度も書くより簡潔になる。
仕組み
エラーのタグをキー、回復処理を値にしたオブジェクトを渡す。
Effect.catchTags({
FetchError: () => Effect.succeed("Fetch error"),
JsonError: () => Effect.succeed("Json error"),
})例
catchTags を使うと、プログラムの本体とエラー処理を完全に分けて書ける。program の書き方は Effect.gen を参照。
const program = Effect.gen(function* () {
const response = yield* fetchRequest
if (!response.ok) {
return yield* new FetchError()
}
return yield* jsonResponse(response)
})
const main = program.pipe(
Effect.catchTags({
FetchError: () => Effect.succeed("Fetch error"),
JsonError: () => Effect.succeed("Json error"),
}),
)