社内の「強い思想を語るLT会」で使用した資料です。 筆者はHaskellやF#、RustなどResult型ネイティブな言語が好みの人間なので、だいぶ偏った見方になっている点はご了承ください。 はじめに みなさん、Result型(Either型)ってご存知ですか? HaskellやElm、Rust、Kotlin、Swiftなどモダンと言われる言語には大体実装されている型です。 筆者は最近、理想のResult型ライブラリを求めて自作するに至りました。 どんな型? ざっくり表現すると処理に失敗する可能性があることを示す型です。 (Monadとか細かい話は置いておく) 言語やライブラリによって命名などが微妙に異なりますが、TypeScriptで示すとこんな感じになります。 // どれもやってることは同じ type Result<T, U> = Success<T> | Failure<U> //