ReactHooksのuseStateのソースコードを読んだらflowのことを思い出せず詰まった

December 31, 2020

commit history
  1. 2020/11/23 16:53:20 1711320
headline

今回読んだやつ

export function useState<S>(
  initialState: (() => S) | S,
): [S, Dispatch<BasicStateAction<S>>] {
  const dispatcher = resolveDispatcher();
  return dispatcher.useState(initialState);
}

これなんと、jsファイルなんです。tsじゃないんですよ。vscodeにコピペしても

Type parameter declarations can only be used in TypeScript files.ts(8004)

tsファイルじゃないとだめだよって怒られるし、困りました。JavaScript Generic とかで調べても自分でGeneric実装した話とかでてくるし、そういうことじゃないって思いながら調べてたら、flowがでてきて、あ、、、って感じで思い出しました。

flowはfacebookが作ったJavaScriptの静的型チェッカーです。 typescriptはMicrosoftです。 stackoverflowで質問の数を比較すると、typescirptは100,000以上ですが、flowは1000未満となっていて、人気はTypeScriptが上のようです。

今回読んだReactHooksのソースコード

https://github.com/facebook/react/blob/e6a0f276307fcb2f1c5bc41d630c5e4c9e95a037/packages/react/src/ReactHooks.js#L80


contact