TypeScriptへRustのようなResult型の導入をお勧めする記事や言説が多いので導入してみましたがあまりよくなかったです。という共有になります。 Result型を導入しても try-catch からは逃れられない これに尽きます。 Result型を導入したあと、try-catch を末端に押しやってそこ以外はResult型のみの世界を実現しようと、おそらくみんな考える。でもそれは機能しない。 実際にやってみるとこんなコードが多発する。 function hoge():Result<void> { try { // fn()は綺麗な世界の実現のためResult型を返すようにしてある。この関数のようにね。 const result = fn() // ここで例外が発生する処理が必要になる return ok(result) } catch(e) { return err(e) } }
