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"),
  }),
)

関連

出典