TypeScriptでReduxを書いていて、Actionの型をredux
からimportしようとしたとき下記のエラーが出て困ったので、(とても簡単ですが)解決法をメモしておきます。
import { Action } from 'redux'
と書くと、「"Action"はreduxのexportメンバーにないよ!」って怒られました。
TS2305: Module '"/node_modules/redux/es/redux"' has no exported member 'Action'.
下記のように記述するとエラーは消えたのですが、
import { Action } from 'redux/index.d.ts'
こんな書き方あまり見たことないし、ちょっと気持ち悪かったので数時間調べて最終的にstackoverflowで聞いたところ、
Redux provides it's own type definitions, so you don't need to install them from Definitely Typed. If you uninstall @types/redux, TypeScript should use those provided by the redux package, and your import will work.
[和訳] Redux自体が型定義を提供しているので、TypeScript型定義ファイル(dts)をインストールしなくていいよ。@types/reduxをアンインストールすればTypeScriptはReduxの型定義を読みに言ってエラーは消えるよ。
とのことで、早速試したところ動きました。@types/redux
はdeprecatedになっていたみたいですね。
参考: https://stackoverflow.com/questions/57470757/typescript-cannot-find-imported-type-action