TypeScript環境でのReactの useRef は、初期値と型引数の与え方によって返り値の型が RefObject と MutableRefObject のどちらかになります。どういう使い方のときにどう書いてどちらを得るべきかを、 @types/react の更新まわりの議論を追った結果を示します。 この記事は2021年5月現在、React 17.0.2が最新バージョンの時点で記述します。 参考にした情報 https://github.com/DefinitelyTyped/DefinitelyTyped/issues/31065#issuecomment-446425911 RefObject と MutableRefObject が別である理由について https://github.com/DefinitelyTyped/DefinitelyTyped/pull/38228#i
![TypeScriptのもとでuseRefを使うときに知るべきRefObjectとMutableRefObjectについて](https://cdn-ak-scissors.b.st-hatena.com/image/square/f4e539b2b4679ebd09d219b5adbd1ce3ac68022f/height=288;version=1;width=512/https%3A%2F%2Fres.cloudinary.com%2Fzenn%2Fimage%2Fupload%2Fs--3ikyykYv--%2Fc_fit%252Cg_north_west%252Cl_text%3Anotosansjp-medium.otf_55%3ATypeScript%2525E3%252581%2525AE%2525E3%252582%252582%2525E3%252581%2525A8%2525E3%252581%2525A7useRef%2525E3%252582%252592%2525E4%2525BD%2525BF%2525E3%252581%252586%2525E3%252581%2525A8%2525E3%252581%25258D%2525E3%252581%2525AB%2525E7%25259F%2525A5%2525E3%252582%25258B%2525E3%252581%2525B9%2525E3%252581%25258DRefObject%2525E3%252581%2525A8MutableRefObject%2525E3%252581%2525AB%2525E3%252581%2525A4%2525E3%252581%252584%2525E3%252581%2525A6%252Cw_1010%252Cx_90%252Cy_100%2Fg_south_west%252Cl_text%3Anotosansjp-medium.otf_37%3Aberlysia%252Cx_203%252Cy_121%2Fg_south_west%252Ch_90%252Cl_fetch%3AaHR0cHM6Ly9saDMuZ29vZ2xldXNlcmNvbnRlbnQuY29tL2EtL0FPaDE0R2oyWUhzVzhEVzVsRF9Rc2ZZeVBXZFhpaENaNGZwZ1pNUzBvaTR3PXMyNTAtYw%3D%3D%252Cr_max%252Cw_90%252Cx_87%252Cy_95%2Fv1627283836%2Fdefault%2Fog-base-w1200-v2.png)