Как обрабатывать неопределенный результат, возвращаемый yield при использовании yield с обещанием в машинописи - PullRequest
0 голосов
/ 19 марта 2020

Вот мой рабочий

export function* postLoginWorker(action: LoginAction): IterableIterator<any> {
try {
  yield put(LoadingIndicatorActions.show());
  const data = action.data as LoginPayload;
  const response: LoginResponse = yield LoginService.postLogin(data); // Error here
  yield put(LoginActions.postLoginSuccess(response));

} 
 // catch
}

Вот как выглядит postLogin:

public postLogin(payload: LoginPayload): Promise<LoginResponse> | LoginResponse {
    return this.service.post({ route: ["login"] }, payload);
  }

Где service.post:

public abstract post<T = void>(path: QueryPath, body: any): Promise<T> | T;

Я получение ошибки: тип 'undefined' нельзя назначить типу 'LoginResponse' в строке, упомянутой в приведенном выше коде. Я думаю, это только потому, что yield может возвращать неопределенный, когда генератор заканчивается? Но я использую тот же код в другом проекте, и он работает там совершенно нормально, я просто обновляю все в этом проекте, так что может быть что-то не так с версиями, но в любом случае yield всегда мог вернуть undefined, поэтому я сомневаюсь, что это root причина ошибки, поскольку точный код работает в другом хранилище с такими же параметрами tsconfig.

...