たれぱんのびぼーろく

わたしの備忘録、生物学とプログラミングが多いかも

TypeScriptでデータフロー中心のプログラミングを実践する

論理

  • 見通しの良さ(怠惰プログラミング)
  • 状態分離 + 宣言型プログラミング
  • データフロー定義 + ランタイム
  • TSでの実装

データフロー定義

単純な関数連鎖

ランタイム候補

  • ただの関数連鎖
  • 独自のObserverパターン
  • Redux
  • FRP
    • RxJS
    • Bacon.js

定期data fetchから連鎖的に更新するタイプなら、関数連鎖だけで組むことが可能 (状態を持たなくても組めるので).
stateを持つ必要があるなら、独自のObserverが一番小さいパターン

FRPはstateに対する型を用意して時系列操作とするので、結構抽象度が高い.
慣れればとても使いやすいけど、ここまで必要ない場合が多いという感触.

"速度最適化とatomic"とか考えだすと結構むずかしさがある.
tree型なら簡単だけど、DAGはやはり大変.

UIランタイム

宣言型UIライブラリ/フレームワークが処理系として動いてくれる.
Reactの場合はReactDOM.render()を毎回呼ぶことがランタイムcallに相当するのでとても楽 (Reactに閉じたアプリはあまり健全だと思えない).