打字稿找不到redux

Ral*_*lph 23 typescript redux react-redux

我收到以下错误:

node_modules/@types/react-redux/index.d.ts(8,24): error TS2307: Cannot find module 'redux'.
Run Code Online (Sandbox Code Playgroud)

尽管安装了两个react-reduxredux(package.json):

"dependencies": {
    "react": "15.4.2",
    "react-native": "0.42.3",
    "react-redux": "^5.0.3",
    "redux": "^3.6.0"
},
"devDependencies": {
    "@types/react": "^15.0.18",
    "@types/react-native": "^0.42.9",
    "@types/react-redux": "^4.4.38",
    "@types/redux": "^3.6.0",
    "babel-jest": "19.0.0",
    "babel-preset-react-native": "1.9.1",
    "jest": "19.0.2",
    "react-test-renderer": "15.4.2",
    "tslint": "^4.5.1",
    "typescript": "^2.2.1"
},
Run Code Online (Sandbox Code Playgroud)

README.md文件中@types/redux说:

This is a stub types definition for Redux (https://github.com/reactjs/redux).
Redux provides its own type definitions, so you don't need @types/redux installed!
Run Code Online (Sandbox Code Playgroud)

但卸载@types/redux包没有区别.

有任何想法吗?

UPDATE

我认为通过index.d.ts@types/redux目录中添加一个(仅包含export * from ../../redux/index),它可以解决问题,但没有快乐.

这是我的tsconfig.json:

{
    "compilerOptions": {
        "target": "es2015",
        "module": "es2015",
        "jsx": "react",
        "outDir": "build",
        "rootDir": "src",
        "allowSyntheticDefaultImports": true,
        "noImplicitAny": true,
        "experimentalDecorators": true,
        "preserveConstEnums": true,
        "allowJs": true,
        "sourceMap": true
    },
    "filesGlob": [
        "src/**/*.ts",
        "src/**/*.tsx"
    ],
    "exclude": [
        "__tests__",
        "index.android.js",
        "index.ios.js",
        "build",
        "node_modules"
    ],
    "compileOnSave": false
}
Run Code Online (Sandbox Code Playgroud)

我肯定删除了@types/redux目录node_modules.我(显然)运行TypeScript 2.2.1.

更新2

代码使用redux:

import { combineReducers } from "redux"

export default combineReducers({})
Run Code Online (Sandbox Code Playgroud)

请注意,添加分号后"redux"无济于事.

And*_*ner 67

我在反应原生项目中遇到了同样的问题.这个修复对我有用:

您必须将"moduleResolution":"node"添加到编译器选项中,以便包含package.json文件中链接的类型定义.

这里的文档https://www.typescriptlang.org/docs/handbook/module-resolution.html

  • 我猜你会认为,当他们说"现在,这种策略主要是为了向后兼容"时,你会被原谅.在他们的官方文档中,"经典"不会是默认的...这只是解决了我很多痛苦,谢谢 (4认同)

Ral*_*lph 6

我恢复了@types/redux@3.6.31,解决了这个问题.此版本包含index.d.tsredux 的文件.TypeScript编译器可能没有index.d.ts在正常node_modules/redux目录中查找文件,但只在下面node_module/@types.