Кто-нибудь сталкивался с этой ошибкой в ​​TS с инструментами redux dev?"Свойство '__REDUX_DEVTOOLS_EXTENSION_COMPOSE__' не существует для типа" Окно "."? - PullRequest
0 голосов
/ 14 октября 2018

Я получаю эту ошибку на моем index.tsx.

Свойство ' REDUX_DEVTOOLS_EXTENSION_COMPOSE ' не существует для типа 'Window'.

Вот мой код 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();

I 'я установил @ types / npm install --save-dev redux-devtools-extension, и я использую create-реагировать-app-typecript.Большое спасибо за любые советы о том, что происходит заранее.

Ответы [ 4 ]

0 голосов
/ 10 августа 2019

Работа в качестве очарования:

const store = createStore(
    rootReducer,
    initialState,
    compose(
        applyMiddleware(...middleware),
        (window as any).__REDUX_DEVTOOLS_EXTENSION__ && (window as any).__REDUX_DEVTOOLS_EXTENSION__()
    )       

);
0 голосов
/ 20 декабря 2018

Была ли изменена та же проблема, я только что изменил

window.__REDUX_DEVTOOLS_EXTENSION__ && window.__REDUX_DEVTOOLS_EXTENSION__()

на

window.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__ && window.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__() || compose

, чтобы обойти проблему undefined при использовании createStore(reducer, initial state, compose(applyMiddleware

0 голосов
/ 14 апреля 2019

Мой подход к проблеме был следующим:

export const composeEnhancers =
  (window && (window as any).__REDUX_DEVTOOLS_EXTENSION_COMPOSE__) || compose;
0 голосов
/ 14 октября 2018

Это особый случай этого вопроса .Redux не предоставляет типы для __REDUX_DEVTOOLS_EXTENSION_COMPOSE__, потому что эта функция предоставляется 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;

Это уже сделано с помощью пакета redux-devtools-extension, который содержит типизированные шрифты.Если он установлен, его импорт следует использовать вместо ручного доступа к __REDUX_DEVTOOLS_EXTENSION_COMPOSE__.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...