Я использую машинописный текст в приложении, но обнаружил некоторую проблему с реакцией-избыточностью. Метод «connect» сообщает о проблеме, и я понятия не имею с ней, так как я новичок с машинописью и редуксом. Что я должен делать или где в моем коде должны быть изменены? Большое спасибо
Приложение построено с typescript@3.3
, react@16.8.5
, react-redux@7.1.0
.
// article
interface IArticle {
title: string,
author: string
}
// state
interface MyState {
list: [],
article: IArticle
}
// stateMapToProps
interface MyStateProps {
article: IArticle
}
// router match
interface MatchParams {
id: string
}
// own props
interface MyOwnProps extends RouteComponentProps < MatchParams > {
article: IArticle,
dispatch: (o: object) => {}
}
class ArticleContainer extends Component < MyOwnProps, {} > {
constructor(props: MyOwnProps) {
super(props);
}
componentDidMount() {
const {
dispatch
} = this.props;
const id = this.props.match.params.id
dispatch(fetchArticle(id))
}
render() {
const {
article
} = this.props;
return ( <
Article article = {
article
} > < /Article>
)
}
}
const mapStateToProps = (state: MyState): MyStateProps => {
return {
article: state.article
}
}
export default connect < MyStateProps, {}, {
article: IArticle
} > (
mapStateToProps
)(ArticleContainer)
Вот код асинхронного действия fetchArticle
function fetchArticle(id: string) {
return function(dispatch: (action: AnyAction) => {}): Promise<void> {
dispatch(getArticle(id))
return axios.get(`/article/${id}`)
.then(res => {
dispatch(getArticleSuccess(res.data))
})
}
}
Ошибка происходит в строке export
, а сообщение выглядит следующим образом:
Аргумент типа '(state: MyState) => MyStateProps' не может быть назначен
к параметру типа 'MapStateToPropsParam'. Тип '(состояние: MyState) => MyStateProps' не является
присваивается типу «MapStateToPropsFactory».
Типы параметров 'state' и 'initialState' несовместимы.
Типу «{}» не хватает следующих свойств из типа «MyState»: список, articlets (2345)