Кажется, что явно введена функция соединения:
export const countable = <P extends CountableProps>(Component: React.ComponentType<P>) =>
connect<StateType, DispatchType, Omit<P, keyof (StateType & DispatchType)>>(
mapStateToProps,
mapDispatchToProps
)(createCountableComponent(Component) as any);
Мы можем привести createCountableComponent (Component) к любому типу, поскольку мы ввели тип подключения с правильными типами (типы state, dispatch и ownProps). Это означает, что при использовании этого компонента вы увидите только реквизиты, которые не являются счетными (что является желаемым решением).
Итак:
class Test extends React.Component<{test: string}> {
render() {
return <div />;
}
};
countable(Test)
выдаст ошибку, а:
class Test extends React.Component<CountableProps & {test: string}> {
render() {
return <div />;
}
};
const Test2 = countable(Test)
<Test2 /> -> intelisense will only give you test now :)
Надеюсь, это поможет.