TS передача type props через connect redux

Доброго времени суток!

Есть следующая функция

import { connect, ConnectedProps } from 'react-redux';
import { TMethods, TState, TApp } from 'redux/types';
import { ComponentType } from 'react';
import action from 'redux/actions/app';

const mapState = (state: TState) => ({ ...state.app });
const mapDispatch = (dispatch: any) => ({ action: (method: TMethods, option: TApp) => dispatch(action(method, option)) });
const connector = connect(mapState, mapDispatch);

export default (component: ComponentType<any>) => connector(component);
export type TProps = ConnectedProps<typeof connector>;

использую функцию выше таким образом:

import connect from '...'

class ComponentName extends Component<PropsType, StateType> {***}

export default connect(ComponentName)

В итоге при импорте компонента я не вижу PropsType и при передаче props компоненту не видно типов.

Вопрос: Как изменить, что добавить что и как переписать чтоб типы тоже передавались через connect? А так же максимально избавиться от any. буду очень благодарен за помощь!


Ответы (1 шт):

Автор решения: Артур Франк

Вопрос решился таким образом:

import { ComponentType } from 'react';
import { connect, ConnectedProps } from 'react-redux';
import action from 'redux/actions/app';
import { TMethods, TApp, TState } from 'redux/types'

const mapState = (state: TState) => ({ ...state.app });
const mapDispatch = (dispatch: any) => ({ action: (method: TMethods, option: TApp) => dispatch(action(method, option)) });
const connector = connect(mapState, mapDispatch);

export default <T>(component: ComponentType<TProps>): ComponentType<T> => connector(component);
export type TProps = ConnectedProps<typeof connector>;

→ Ссылка