まだ個人的な気持ちでしかないんだけどメモ。
TypeScriptでResult型でのエラーハンドリングを通してモナドの世界を覗いてみる #関数型プログラミング - Qiita
より。
内容はとてもよいと思うんだけど、やはり
export const ok = <T>(value: T): Ok<T> => ({ ok: true, value });
この書き方はとてもよく目が滑るので、
/**
* Okの値をResult型にして返す
*
* @param {<T>} value
* @returns {Ok<T>}
*/
export const ok = <T>(value: T): Ok<T> => {
return {
value,
ok: true
}
}
これくらいリッチであってほしい。せめて行を改めて return {}
にするくらいはやってくれないと、単に記号がたくさん並んでるだけに見えてしまい、中身も名前も目に入らなくなってしまう。本当は arrow function ではなく
function <T>ok (value: T): Ok<T> {
return {
value,
ok: true
}
}
の方が好みではあるんだけど、arrow function にすると名前の情報を挟まずに以下のように
export const ok = <T>(value: T): Ok<T> => {
値と型だけをまとめて書けることにもそれなりにメリットがあることは理解できてきた気がする。
そこで
型情報に集中できる
を最大化するためにも、処理内容は行を改めて書くことにしたい。