Я пытаюсь создать HO C с redux 'connect, обертывающим какой-то другой компонент. Однако я не могу правильно понять аргументы connect generi c. Другие руководства по этому топи c, которые я обнаружил, либо едва поцарапали поверхность, либо пролетают над моей головой. Буду признателен за помощь в этом. Это мой код на данный момент:
import React, { ReactElement } from 'react'
import {StoreState} from '../reducers'
import {connect} from 'react-redux'
interface Props{
auth: boolean
}
interface OwnProps {
}
export default (ChildComponent: React.ComponentType): React.ComponentType<typeof ChildComponent>=> {
class ComposedComponent extends React.Component<Props> {
componentDidMount(): void{
this.shouldNavigateAway()
}
componentDidUpdate(): void {
this.shouldNavigateAway()
}
shouldNavigateAway = (): void => {
if (!this.props.auth) {
//do something
}
}
render(): ReactElement {
return <ChildComponent {...this.props} />
}
}
const mapStateToProps = ({
auth,
}: StoreState): {auth: boolean} => {
return { auth }
}
return connect<Props, {}, OwnProps>(mapStateToProps)(ComposedComponent)
}
Ошибка, которую я получаю, находится исключительно в 'mapStateToProps' в моем операторе возврата в самом конце, и в нем говорится:
const mapStateToProps: ({ auth, }: StoreState) => {
auth: boolean;
}
Argument of type '({ auth, }: StoreState) => { auth: boolean; }' is not assignable to parameter of type 'MapStateToPropsParam<Props, OwnProps, DefaultRootState>'.
Type '({ auth, }: StoreState) => { auth: boolean; }' is not assignable to type 'MapStateToPropsFactory<Props, OwnProps, DefaultRootState>'.
Types of parameters '__0' and 'initialState' are incompatible.
Type 'DefaultRootState' is missing the following properties from type 'StoreState': comments, authts(2345)
My Интерфейс StoreState выглядит следующим образом:
export interface StoreState {
comments: Comment[]
auth: boolean
}
Однако я чувствую, что мне нужен его возвращаемый тип таким, какой он есть. Я уже пробовал опустить часть комментариев в моем состоянии, поскольку HO C отвечает только за свойство auth, но в этом случае ошибка все равно будет жаловаться на отсутствие auth. Типа застрял здесь и не уверен, куда TS пытается меня указать.