2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

Next.js + サーバーサイドTypeScript + 関数フレーバーでクリーンなアプリを作ったので実装意図とか書く Advent Calendar 2022
6日目株式会社mofmofに生息しているshwldです。

前日は型で状態を表現するについて書きました。

関数の合成

クラスを使わずにドメインモデルを書くことに決めたのですが、そうなると関数型の流儀みたいなものを使いたくなります。
とはいえ、あまり関数型の流儀に自分自身が慣れていないのと、理解しきれていないので、少しづつ取り入れることにしました。

関数を組み合わせて処理を書く際に普通に書くとこうなります。

function sum(a, b) {
  return a + b
}

function addTax(kane) {
  return kane * 1.1
}

addTax(sum(10, 20))

2つとかならいいのですが、たくさんの関数を使おうとすると

e(d(c(b(a()))))

つらそう!!!

ここは、よくあるメソッドチェーンみたいに書きたいものです。

price.add(20).addTax()

みたいに!
なので、pipeを使いました。

const sum = (a) => (b) => a + b;
pipe(10, sum(20), addTax);

だいぶ近い。良いでしょう。

ということで、これを実現するために fp-tspipe というのを使っています。

次回予告

明日はEither型を使ってエラーを扱うについて書きます

2
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?