当前位置: 首页 > 知识库问答 >
问题:

使用TS的Redux DevTools扩展出错:"属性'__REDUX_DEVTOOLS_EXTENSION_COMPOSE__'在类型'窗口'上不存在。"?

宗穆冉
2023-03-14

我的index.tsx.出现了这个错误

类型Windows中不存在属性REDUX_DEVTOOLS_EXTENSION_COMPOSE。

这是我的index.tsx代码:

import * as React from 'react';
import * as ReactDOM from 'react-dom';
import App from './App';
import './index.css';
import registerServiceWorker from './registerServiceWorker';

import { Provider } from 'react-redux';

import { createStore, compose, applyMiddleware } from 'redux';
import rootReducer from './store/reducers';

import thunk from 'redux-thunk';

const composeEnhancers = window.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__ || compose;

 const store = createStore(rootReducer, composeEnhancers(
     applyMiddleware(thunk)
 ));

ReactDOM.render(  <Provider store={store}><App /></Provider>, document.getElementById('root'));

registerServiceWorker();

我已经安装了@types/npm install--save dev redux devtools扩展,我正在使用create react app typescript。非常感谢你提前告诉我发生了什么事。

共有3个答案

韩宏朗
2023-03-14

我对这个问题的态度如下:

export const composeEnhancers =
  (window && (window as any).__REDUX_DEVTOOLS_EXTENSION_COMPOSE__) || compose;
井洲
2023-03-14

使用TypeScript最简化的方法是使用redux devtools扩展并作为开发依赖项安装,如下所示:

npm install --save-dev redux-devtools-extension

对于那些新来的redux和这些开发工具的下一步是混乱和不清楚的。文档都有如下代码:

const store = createStore(reducer, composeWithDevTools(
  applyMiddleware(...middleware),
  // other store enhancers if any
));

问题是我没有配置任何中间件,因此无法正常工作。在最原始的用法中,这就是您所需要的:

import { composeWithDevTools } from 'redux-devtools-extension';

const store = createStore(myReducer, composeWithDevTools());

此时,如果在浏览器中单击扩展,并且存在有效的redux存储,则可以检查状态。

这是使用(任何窗口)的另一种方法,并且还明确了如何以最小的形式使用redux devtools扩展。

余善
2023-03-14

这是这个问题的一个特例。Redux不提供\uuuuu Redux\u DEVTOOLS\u EXTENSION\u COMPOSE\uuuuu的类型,因为此函数是由Redux DEVTOOLS公开的,而不是Redux本身。

要么是:

const composeEnhancers = window['__REDUX_DEVTOOLS_EXTENSION_COMPOSE__'] as typeof compose || compose;

或:

declare global {
    interface Window {
      __REDUX_DEVTOOLS_EXTENSION_COMPOSE__?: typeof compose;
    }
}

const composeEnhancers = window.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__ || compose;

这已经通过包含TypeScript类型的redux-devices-扩展名包完成了。如果已安装,则应使用其导入,而不是手动访问__REDUX_DEVTOOLS_EXTENSION_COMPOSE__

 类似资料:
  • 我尝试开始使用TypeScript 2.4.1在我的旧AngularJS项目。首先,我试图重构我的简单控制器ts。在控制器上,我在编译过程中使用匿名函数获取

  • 我使用的是完全修补过的Visual Studio 2013。我正在尝试使用JQuery、JQueryUI和JSRender。我也在尝试使用打字。在ts文件中,我得到如下错误: 类型“{}”上不存在属性“fade div”。

  • 我试图在登录过程后获得连接的用户模型, 首先,在CanActivate guard检查了带有用户JSON对象的本地存储并发现该对象为空之后,用户将重定向到“/login”URL 然后用户登录并重定向回根URL“/”,在连接过程中我使用AuthService,它将从服务器返回的用户对象保存在用户模型中 这是我的守卫:

  • 升级到Angular 6.0和Rxjs到6.0后,我收到以下编译错误:

  • 获取错误:(类型窗口中不存在属性“MktoForms2”

  • 我试图在TypeScript中使用“时刻-持续时间格式”,但即使它有效,webpack仍不断抱怨它无法在线找到“格式”方法: 这里是package.json tsconfig.json: 在(angular2)组件中: 我也试过了 但这并不能改变什么: [at-loader]./src/app/组件/建筑/商店/shop.component.ts:190中的错误:81 TS2339:属性“格式”在