여기에 타이프립트 + redux 생태계에 새로 추가되었습니다.타이프 스크립트에서 redux-actions, redux-thunk 및 redux-promise-middleware 사용
TypeScript에서 redux-actions, redux-thunk 및 redux-promise-middleware를 사용할 때 유형 정보를 비동기 작업에 올바르게 캡슐화하려면 어떻게해야합니까?
인증의 예 :
/* actions */
const login = createAction(LOGIN, authService.login);
/* authService */
async function login(payload: LoginPayload): Promise<LoginResponse> {
// ... authenticate here.
}
내가 REDUX - 약속 - 미들웨어를 사용하고 있기 때문에, 액션 LOGIN_PENDING
, LOGIN_FULFILLED
/LOGIN_REJECTED
가 자동으로 전달됩니다. 감속기가 어떤 액션 객체를 처리하는지 파악할 수있는 유형을 어떻게 만들 수 있습니까?
FSA 다음에 redux-actions가 있기 때문에 _FULFILLED
은 action.payload
이어야합니다. _REJECTED
나는 AuthAction
유형을 만드는 방법에 대해 갈 것이라고 어떻게 action.error
/* reducer */
function loginReducer(state: AppState, action: AuthAction) {
switch (action.type) {
case LOGIN_FULFILLED:
// action.payload should be defined as LoginResponse object here.
// action.error shouldnt be present.
case LOGIN_REJECTED:
// action.error should be defined
}
}
을해야합니까? 나는 그것이 각각의 액션 타입의 유니온 타입이어야한다고 생각한다. (유니온 타입이 될 수있다.) redux-actions
은 Action
및 BaseAction
유형을 제공합니다.
이것이 문제입니다. 각각의 case 블록이'action'이 나오는 인터페이스를 알고있는 것처럼'AuthActions'가 될 것입니다. 나는 명확성을 위해 질문을 편집했다. –
위의 대답은 LoginActions 공용체 유형입니다. Iv'e는 미들웨어에 대한 .dts 파일을 읽었으며 그로부터 제네릭을 볼 수 있습니다. 그래서 당신이 내가했던 것처럼 정의해야하고 당신의 감속기에 노동 조합 유형을 가져와야한다는 것을 의미합니다. –