Skip to content

Instantly share code, notes, and snippets.

@wtnabe
Last active November 10, 2024 00:20
Show Gist options
  • Save wtnabe/897f9c4a7340a5bbf012a6ca9a4bf3cc to your computer and use it in GitHub Desktop.
Save wtnabe/897f9c4a7340a5bbf012a6ca9a4bf3cc to your computer and use it in GitHub Desktop.
目の滑りにくいarrow function

まだ個人的な気持ちでしかないんだけどメモ。

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> => {

値と型だけをまとめて書けることにもそれなりにメリットがあることは理解できてきた気がする。

そこで

型情報に集中できる

を最大化するためにも、処理内容は行を改めて書くことにしたい。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment