TL;DR
TypeScript で本番品質のソフトウェアを書くためのライブラリ。型付きのエラー処理、構造化された並行処理、リソースの安全な解放、オブザーバビリティを 1 つの仕組みで扱う。
なぜ必要か
TypeScript の型はデータの形をよく表せるが、プログラムがどう振る舞うか(どんなエラーを起こすか、何に依存するか)はほとんど表せない。Effect は失敗と依存関係を型に載せ、コンパイラから見えるようにする。
仕組み
中心にあるのは Effect 型である。Effect 型の値は、結果、起こりうるエラー、必要とする依存をすべて含めてプログラムを記述する。この型の上に、リトライとスケジューリング、並列数を制限した処理、依存性の注入(Effect Service)、トレースとメトリクス、ストリーミング、スキーマによる検証(Effect Schema)、型付きの設定(Effect Configuration)などの機能がそろっている。