Может ли какой-нибудь мастер TypeScript помочь мне выяснить, почему этот код для создания улучшений магазина в redux 4.0 дает мне ошибки типов?
Минимальное РЕПО здесь .Это создание магазина ничего не делающего.После клонирования установите зависимости, запустив yarn
.Чтобы увидеть ошибку, запустите yarn run compile
.
Соответствующий файл
import {
StoreEnhancer,
StoreEnhancerStoreCreator,
Reducer,
DeepPartial,
AnyAction,
} from 'redux';
interface RootState {
someKey: string;
}
export const enhancer: StoreEnhancer =
(createStore: StoreEnhancerStoreCreator): StoreEnhancerStoreCreator =>
(reducer: Reducer<RootState, AnyAction>, preloadedState?: DeepPartial<RootState>) => {
const store = createStore(reducer, preloadedState);
const newDispatch: typeof store.dispatch = <A extends AnyAction>(action: A) => {
const result = store.dispatch(action);
return result;
}
return {
...store,
dispatch: newDispatch,
};
};
Я получаю ошибку
src/enhancer.ts(15,5): error TS2322: Type '(reducer: Reducer<RootState, AnyAction>, preloadedState?: DeepPartial<RootState> | undefined) => ...' is not assignable to type 'StoreEnhancerStoreCreator<{}, {}>'.
Types of parameters 'reducer' and 'reducer' are incompatible.
Types of parameters 'state' and 'state' are incompatible.
Type 'RootState | undefined' is not assignable to type 'S | undefined'.
Type 'RootState' is not assignable to type 'S | undefined'.
Type 'RootState' is not assignable to type 'S'.
Я не понимаю, почему RootState
нельзя назначить S
.