useStateの型、Dispatch<SetStateAction<T>> についてとジェネリック型

nove-b January 11, 2025
Source
useStateの型 useStateの状態管理関数をPropsで渡すとき、受け取る側は という方で受け取ることになる。 ジェネリクスのメリットがいまいち 関係ないけどずっと気になっていた「ジェネリクスのメリットがいまいちピンとこない件」について、ついでに調べてみることにした。 例えば、 という関数が存在した時、 こんな感じにまとめたくなる。 これをジェネリック型にすると、 こんな感じになる。 型ガードが必要 同じように感じるけど、returnTextOrNumberの場合は、 stringとnumberのどちらが返ってくる確定していないので、コンパイルエラーが出る。 実行するためには のように型ガードする必要がある。 コンパイラーをだませる bは0なのでlengthが存在しないが、as stringで強制的に文字列とコンパイラーと認識させられる。 これはコード的負の遺産になる。 ジェネリック型は堅牢でコード量が少ない 対照的にジェネリック型であるreturnTextOrNumberGeneric の場合は、 関数実行時に入出力共に型を指定し確定できるので、コンパイルエラーがでない。 また 強制的に異なる方でコンパイラーを納得させようとしても不可能になり、堅牢制が向上した。 実際に整理してみるとジェネリック型の恩恵がよくわかった。

Discussion in the ATmosphere

Loading comments...