Тип возвращаемого значения асинхронной функции должен быть глобальным типом Promise <T>. - PullRequest
0 голосов
/ 18 февраля 2019

enter image description here

Почему TSlint по-прежнему говорит: «Тип возврата асинхронной функции или метода должен быть глобальным типом Promise»?

Я могу 'не понимаю, в чем дело.

ОБНОВЛЕНО: enter image description here

Ответы [ 2 ]

0 голосов
/ 18 февраля 2019

Я думаю, что проблема в том, что вы пытаетесь вернуть результат ожидания вместо того, чтобы захватить результат и обработать его:

@Action
public async register(registerInfo: Account): Promise<boolean> {
  const result = await http.post('users/', registerInfo);

  return result.data.success;
}
0 голосов
/ 18 февраля 2019

Попробуйте вернуть Promise обернутое значение, соответствующее ожидаемому универсальному типу Promise, что-то вроде этого:

@Action
public async register(registerInfo: Account): Promise<boolean> {
  const res = await http.post('users/', registerInfo);

  return new Promise<boolean>((resolve, reject) => {
    resolve(res.data.success);

    // Or reject() if something wrong happened
  });

  // Or simply return a resolved Promise
  return Promise.resolve(res.data.success);
}

На самом деле, вы также должны иметь возможность then() результата:

@Action
public async register(registerInfo: Account): Promise<boolean> {
  return await http
            .post('users/', registerInfo)
            .then(res => res.data.success);
}
...