ゆるふわ技術日誌

エンジニア見習いの悪戦苦闘日記

Day9 #100DaysOfCode

Day9

今日はTypeScript + Reduxにしっかりチャレンジしてた。

なんだかんだでチャレンジしてはめんどくさくなって(おい)やめたりみたいなことを繰り返して来たのでちゃんと本腰入れてやってます。

てか、これ1年前とやってることがまるで変わってないんですよね。ほんと1年間無駄に使ってしまったなと後悔。マジで誰か殺してくれ。

Redux本体については日本語も英語も解説記事が死ぬほどあるので、それを読んだりすると雰囲気が掴めるので、今のところはたいした問題にはぶち当たっていないのですが、redux-thunkの方はややつまづいてしまった。

いろいろ試してなんとか掴んだ気がする。TypeScriptやっててわけわからなくなったら、型定義ファイルを見るのが一番いいなと思った。

たとえば、redux-thunkの型定義ファイルの一部を抜き出すとこんな感じ

export type ThunkAction<R, S, E, A extends Action> = (
  dispatch: ThunkDispatch<S, E, A>,
  getState: () => S,
  extraArgument: E
) => R;

ところで、extraArgumentとかいう知らん単語が出て来てなんだろうと思ったら、公式のREADMEに書いてた。

Since 2.1.0, Redux Thunk supports injecting a custom argument using the withExtraArgument function:

らしい。

const store = createStore(
  reducer,
  applyMiddleware(thunk.withExtraArgument(api))
)

// later
function fetchUser(id) {
  return (dispatch, getState, api) => {
    // you can use api here
  }
}

こんな感じでAPI渡したりできるっぽい。なにこれ素敵やん。

これ使ってみようと思ふ。

雑談

今日はむさしの森珈琲にいった。イケイケ空間。