Upgrade to Pro — share decks privately, control downloads, hide ads and more …

TypeScript で Railway Oriented Programming 型安全なエ...

daitasu
March 19, 2025
22

TypeScript で Railway Oriented Programming 型安全なエラーハンドリングを作る

2025.3.19 コネヒトさんとのクローズドイベント

元記事
https://daitasu.hatenablog.jp/entry/2025/03/04/090000

daitasu

March 19, 2025
Tweet

Transcript

  1. Result 型とは • ROP に則った型定義 • 言語によって命名が微妙に異なる • Result 型

    ◦ Success と Failure の Union 型 • Result 型を受けてResult型を返す処理も 一緒に必要(Scala だと flatMap 関数) ◦ Success 受取り時: 次の関数を実行 ◦ Failure 受取り時: 何もせず次へ
  2. Result 型を適用する 返り値の型を Result 型へ → 型エラーで Handling 漏れに気付ける Success時:値が返却

    Error時:エラー箇所の情報を保持 エラー処理の入れ子が減って、 処理が追いやすくなる
  3. まとめ • 手続き的エラーハンドリングはしんどい ◦ try catch の入れ子の増加と対応漏れの発生 ◦ 例外の型が伝播されない •

    Result はオススメ ◦ ROP によって例外処理の漏れを型安全に防止できる ◦ try catch の入れ子を脱せて、煩雑化を防げる • TS 標準の型ではない ◦ TS 標準の型ではなく、オレオレ型定義が生まれる ◦ 用法・用量を守って症状を見ながらの使用に留める