해결된 질문
23.06.20 22:46 작성
·
188
·
수정됨
0
//비동기
const logIn = (data: any): any => {
return (dispatch: Dispatch<AnyAction>, getState: any) => {
dispatch(logInRequest(data));
try {
return setTimeout(() => {
dispatch(logInSuccess({
id: 1,
name: "userName",
admin: true,
})
);
}, 2000);
} catch (error) {
return dispatch(logInFailure(error));
}
};
};
const logInRequest = (data: any): AnyAction => {
return {
type: "LOG_IN_REQUEST",
data,
};
};
const logInSuccess = (data: any): AnyAction => {
return {
type: "LOG_IN",
data,
};
};
const logInFailure = (error: unknown) => {
return {
type: "LOG_IN_FAILURE",
error,
};
};
//login을 dispatch
store.dispatch(logIn({ id: 1, name: "userName", admin: true }));
강좌코드를 타입스크립트로 변환해보고 있는중에 궁금한게 있어서 질문드립니다.
login 비동기 함수가 return 하는게 함수이고
setTimeOut함수 때문에 함수반환타입도 Action 타입이 아니라서
최종적으로 리턴타입이 () => NodeJS.Timeout | AnyAction이 되는것 같습니다
store.dispatch(login())을 하면 타입에러가 나오는데
login 리턴타입을 any로 바꿔주는거 말고 다른 방법으로 해결 할 수 있는 방법이 있을까요?
답변 1
0
2023. 06. 20. 23:17
https://stackoverflow.com/a/64859884
이런 식으로 dispatch의 타입을 직접 변경해야 합니다. 리덕스툴킷에는 이 작업이 되어 있습니다.