Итак ... Мне нужно выполнить редукционное соединение переведенного компонента i18n с использованием TypeScript. Проблема в том, что типы сходят с ума!
interface Props extends InjectedTranslateProps {
page: number;
}
interface StoreData {
count: number;
}
const BookComponent = ({ page, count }: Props & StoreData) => {
...
}
const translatedComponent = translate(['books'])(BookComponent );
function mapStateToProps(state: Store): StoreData {
return {
count: state.count
};
}
export default connect<StoreData, void, Props>(mapStateToProps)(translatedComponent);
Он вообще не хочет работать, и я получаю эту ошибку:
Argument of type 'ComponentClass<Pick<Props & InjectedTranslateProps, "page"> & TranslateHocProps>' is not assignable to parameter of type 'ComponentType<StoreData & DispatchProp<any> & Props>'.
Type 'ComponentClass<Pick<Props & InjectedTranslateProps, "page"> & TranslateHocProps>' is not assignable to type 'StatelessComponent<StoreData & DispatchProp<any> & Props>'.
Type 'ComponentClass<Pick<Props & InjectedTranslateProps, "page"> & TranslateHocProps>' provides no match for the signature '(props: StoreData & DispatchProp<any> & Props & { children?: ReactNode; }, context?: any): ReactElement<any> | null'.
const translatedForm: React.ComponentClass<Pick<Props & InjectedTranslateProps, "page"> & TranslateHocProps>
Но если я поменяю реквизит на любой, проблема исчезнет.
export default connect<StoreData, void, any>(mapStateToProps)(translatedComponent);