У меня вопрос к тебе! Я перенес свое приложение Entier на typeScript, но у меня возникли некоторые трудности с функцией compose ... (не беспокойтесь об этом, я уже исправляю все, кроме compose ())
С compose(...)
(без 'any') Я получаю следующее:
Никакая перегрузка не соответствует этому вызову. Перегрузка 1 из 2, '(props: Readonly): Route', выдала следующую ошибку. Тип «unknown» не может быть назначен типу «ComponentClass | FunctionComponent | ComponentClass, любой> | FunctionComponent <...> | не определено. Тип «unknown» не может быть назначен типу «FunctionComponent>». Перегрузка 2 из 2, '(props: RouteProps, context ?: any): Route', выдала следующую ошибку. Тип «unknown» не может быть назначен типу «ComponentClass | FunctionComponent | ComponentClass, любой> | FunctionComponent <...> | не определено. Тип «unknown» не может быть назначен типу «FunctionComponent>». TS2769
Вот почему я хотел бы заменить его и ввести его.
это мой код:
/ container.ts
//@ts-ignore
import { connect } from "react-redux";
import { compose, AnyAction, Dispatch } from "redux";
import { withRouter } from "react-router-dom";
import { getProfile, updateProfile } from "../../../services/clients/user";
import { updateUserInitial } from "../../../actions/initialUser";
import { IStoreState } from "../../typeScriptInclude";
import { ThunkDispatch } from "redux-thunk";
import { Profile } from "./component/utilities/includeTypeScript";
import { IEditAccountProps as Props } from './component/EditAccount';
interface IupDateWalterInitailUserPropsType {
walterUser: {
first_name: string;
last_name: string;
};
}
interface IMapStateToProps{
isConnect: boolean;
walterUser: any;
upDateProfile: any;
}
interface IMapDispatchToProps{
upDateWalterInitailUser: any;
}
const mapStateToProps = (state: IStoreState): IMapStateToProps => {
return {
isConnect: state.isConnect,
walterUser: getProfile(),
upDateProfile: (data: Profile) => updateProfile(data)
};
};
type ApplicationDispatch = ThunkDispatch<IStoreState, void, AnyAction> &
Dispatch;
const mapDispatchToProps = (
dispatch: ApplicationDispatch,
): IMapDispatchToProps => ({
upDateWalterInitailUser: (form: IupDateWalterInitailUserPropsType) =>
dispatch(updateUserInitial(form))
});
export default compose<any>(
withRouter,
connect(
mapStateToProps,
mapDispatchToProps
)
);
/ index.ts
import EditAccount from "./component/EditAccount";
import container from './container';
export default container(EditAccount);
Дело в том, что я много чего пытался набрать, но ничего не поделать ... Я пытался
// Which props define our new component : IProps - IInjectedProps
type ContainerProps = Omit<Props, keyof InjectedProps>;
export default compose<Props, ContainerProps>(
withRouter,
connect(
mapStateToProps,
mapDispatchToProps
)
);
Я снимаю withRouter
но я получаю следующее:
Ожидается 2 аргумента, но получено 1. TS2554
Очевидно, но почему это не работает с моим первым решением ... нужно понять
Спасибо всем с наилучшими пожеланиями.