Skip to content

デフォルトサービス

Effectには、5つのプリビルトサービスが備わっています。

type DefaultServices = Clock | Console | Random | ConfigProvider | Tracer

これらのサービスを利用する際、明示的に実装を提供する必要はありません。Effectが自動的にこれらのサービスのライブバージョンを効果に供給し、手動でのセットアップを不要にしてくれます。

import { Effect, Clock, Console } from "effect"
const program = Effect.gen(function* () {
const now = yield* Clock.currentTimeMillis
yield* Console.log(`アプリケーションは ${new Date(now)} に起動しました`)
})

ご覧のとおり、プログラムがClockConsoleの両方を利用している場合でも、エフェクトを実行するために必要なサービスを示すRequirementsパラメータはneverのままです。Effectがこれらのサービスをシームレスに処理してくれるのです。