TL;DR

Effect の中心となる型 Effect<A, E, R>。副作用を値のように扱えるようにする。

仕組み

Effect<A, E, R> の 3 つの型パラメータは、それぞれ次の型を表す。

  • A: 成功したときの型
  • E: 失敗したときの型
  • R: 依存するコンテキストの型(Effect Service を参照)

Effect は「プログラムが何をするか」を表すだけで、作っただけでは実行されない。実行するには run* 系の関数を明示的に呼ぶ。通常の同期処理なら Effect.runSync、非同期処理なら Effect.runPromise を使う。

例

Effect は値なので、配列に入れたり、関数の引数として渡したりできる。

const print = Console.log("Hello")
 
const printingArray = [print, print, print]
 
const printIfTrue = (check: boolean, toPrint: Effect.Effect<void>) => {
  if (check) Effect.runSync(toPrint)
}

関連

出典