Я настраиваю приложение с React-Redux и настраиваю хранилище, как показано в руководстве здесь
Вот мой код:
import { applyMiddleware, compose, createStore } from 'redux';
import thunkMiddleware from 'redux-thunk';
import rootReducer from '../reducers/reducers'
export default function configureStore() {
const middlewares = [thunkMiddleware];
const middlewareEnhancer = applyMiddleware(...middlewares);
const enhancers = [middlewareEnhancer];
const composedEnhancers = compose(...enhancers);
const preloadedState = (<any>window).__PRELOADED_STATE__;
delete (<any>window).__PRELOADED_STATE__;
const store = createStore(rootReducer, preloadedState, composedEnhancers);
return store;
}
Однако, я продолжаю получать следующую ошибку Typescript при запуске build
TS2345: Argument of type '(...args: any[]) => {}' is not assignable to parameter of type 'StoreEnhancer<{}, {}>'.
Я в замешательстве. Разве в файле декларации Redux не указано (показано ниже), что StoreEnhancer просто получает расширения Store и State как пустые простые объекты?
export type StoreEnhancer<Ext = {}, StateExt = {}> = (next: StoreEnhancerStoreCreator) => StoreEnhancerStoreCreator<Ext, StateExt>
Если это так, почему он не принимает тип «Any» из остальных параметров, даже если для свойства «noImplicitAny» в файле конфигурации установлено значение «true», как показано ниже?
(Насколько мне известно, остальные параметры не могут получить объявленный тип в любом случае.)
Чего мне не хватает?
Также я использую следующие версии пакетов:
"реагировать": "^ 16.4.2",
"redux": "^ 4.0.0",
"redux-thunk": "^ 2.3.0",
"webpack": "^ 4.16.5",
"awesome-typescript-loader": "^ 5.2.0",
"машинопись": "^ 3.0.3"
"@ types / реагировать": "^ 16.4.12",
"@ types / redux": "^ 3.6.0",
"@ types / redux-thunk": "^ 2.1.0"
со следующими настройками конфигурации TS:
"compilerOptions": {
* "outDir": "./dist/",
* "sourceMap": правда,
* "noImplicitAny": правда,
* "модуль": "esnext",
* "target": "esnext",
* "JSX": "реагировать",
* "moduleResolution": "узел",
* "noUnusedLocals": правда,
* "noUnusedParameters": true,
* "строгий": правда,
* "esModuleInterop": false,
* "noFallthroughCasesInSwitch": правда,
* "allowSyntheticDefaultImports": верно
}