@types/react-native がズレる問題
react-native のプロジェクトを typescript でやる時とりあえず devDependecies に @types/react-native
を追加する。
その時の最新バージョンで入る。例えば ^0.57.27
みたいな感じ。
次に react-navigation も使いましょうということで @types/react-navigation を入れる。これは dependecies に "@types/react-native": "*"
が指定されている。これは最新が指定されていることなので、結果同じ 0.57.27 が入る。
react-native の version をあげたり、types ファイルが間違っているからということで devDependecies の方をあげる。例えば 0.58.0 が入る。でも react-navigation が依存している types/react-native は上がらない。
結果として補完の時とかに定義が食い違って typescript のエラーが起きる。
一括で全部あげられるといいけど良い方法がわからなかったので
"devDependencies": { "@types/react-native": "^0.57.0" }, "resolutions": { "**/@types/react-native": "^0.57.0" },
こんな感じで yarn の resolutions を使って依存している types/react-native も一緒のものを使うように強制した。 乱暴な感じもするけど、型定義が食い違うとかなりストレスなのでまだこれの方がマシ。