Я перевожу свой маленький проект React Native с чистого Javascript на Typescript. Пока все шло хорошо, у меня сейчас проблемы с Redux.
Редуктор, с которым я борюсь, - radioButtonSelectedReducer
. В приложении есть две радиокнопки. Если щелкнуть первый элемент, он выдаст строку «itemOne», а если щелкнуть второй элемент, он выдаст строку «itemTwo». Поэтому radioButtonSelected
должно быть типа string, подумал я. Но он выдает ошибку: radioButtonSelected: string;
->
"The expected type comes from property 'radioButtonSelected' which is declared here on type 'ReducersMapObject<IApplicationState, AnyAction>'"
Я такой новичок Typescript ie и не знаю, что делать с этим сообщением.
imports ...
export interface IApplicationState {
radioButtonSelected: string;
searchBarInput: string;
searchBarResult: string;
}
const rootReducer = combineReducers<IApplicationState>({
radioButtonSelected: radioButtonSelectedReducer,
searchBarInput: searchBarInputReducer,
searchBarResult: searchBarResultReducer,
});
export type RootState = ReturnType<typeof rootReducer>;
Когда я оставляю combineReducers()
без <IApplicationState>
и вызываю RootState
в mapStateToProps()
, выдает ошибку:
error TS2339: Property 'itemSelected' does not exist on type 'CombinedState<{ radioButtonSelected: { itemSele
cted: string; }; searchBarInput: { inputValue: any; }; searchBarResult: { returnValue: any; }; }>'.
Вот фрагмент из компонента это реализует переключатели:
...
function mapStateToProps(state: RootState) {
return {
itemSelected: state.itemSelected,
};
}