programing

Thunk 디스패치 대기 결과를 입력하려면 어떻게 해야 하는가?

prostudy 2022. 3. 13. 11:03
반응형

Thunk 디스패치 대기 결과를 입력하려면 어떻게 해야 하는가?

나는 비동기적으로 끈을 돌려주는 컹크의 결과를 기다리고 싶다.내 문제는 마지막 줄에 있어 어떻게 타이프를 치는지 모르겠어cityName로서string.

// 오류, 'ThunkAction, AppState, undefined, any>' 형식은 'string' 형식에 할당할 수 없음.

코드는 의도대로 작동하는데, 유감스럽게도 내가 타이핑을 해야 한다.cityName로서any

const getCity = (): Thunk<Promise<string>> => async (
  dispatch,
  getState
): Promise<string> => {
  // ...
  const city = await fetchCityApi(query);
  dispatch(setUserCity(city));
  return city;
};

export const getDataUsingCity = (): Thunk<void> => async dispatch => {
  const cityName: string = await dispatch(getCity());
};

Thunk가 값을 반환하지 않는 한 잘 작동하는 Thunk용 포장지를 사용하고 있다.

export type Thunk<R> = ThunkAction<R, AppState, undefined, any>;

이것은 안에 버그로 보인다.redux-thunk이 범법 행위 에서 고정된 것.수정된 사용ThunkDispatch커밋 내의 유형은 위의 코드가 오류 없이 작동하도록 한다.그러나 의 새로운 버전은redux-thunk2018년 5월 이후 발행되지 않은 것으로, 이는 이 수정안이 공개적으로 이용될 수 없다는 것을 의미한다.

관련 이슈를 살펴본다면, 당신은 또한 당신의 정의의 변화를 통해 이것을 고칠 수 있다.Thunk<R>

export type Thunk<R> = ThunkAction<R, AppState, undefined, Action>;

이것은 정확한 과부하를 강요한다.ThunkDispatch(가져가는 것ThunkAction사용할 것.그렇지 않으면 그 때문에anyTypeScript는 둘 중 어떤 것을 사용할지 모호하게 할 수 없으며, 따라서 첫 번째 것(평야를 차지하는 것)만 선택한다.Action위의 PR이 TS를 선택하도록 하기 위해 두 개의 과부하를 재정렬하기 때문에 문제를 해결하는 것도 이 때문이다.ThunkAction디폴트로 변형하다

참조URL: https://stackoverflow.com/questions/55205461/how-do-i-type-the-result-of-awaiting-a-thunk-dispatch

반응형