TSlint возвращает массив строк обещаний - PullRequest
0 голосов
/ 12 сентября 2018

Как сделать так, чтобы функция возвращала массив строки-обещания?

  this.MyArray= [];

  async OtherFunction() {
    this.MyArray= await this.callQuery(); //***
  }

  async callQuery() {
    return await new Promise((resolve, reject) => {
      this.httpclient.get('').subscribe(response => {
        resolve(response);
      });
    });
  }

В этом примере мой tslint выдает ошибку над this.MyArray в ссылке с //***.Ошибка говорит: Type '{}' is not assignable to type 'any[].Но когда я добавляю объявление типа в функцию callQuery() следующим образом:

async callQuery(pQuery): string[] {

, тогда я получаю ошибку tslint над string[], говоря: Type 'string[]' is not a valid async function return type in ES5/ES3 because it does not refer to a Promise-compatible constructor value.

Все, что я пытаюсь сделать правильно, это устранить ошибку tslint над this.MyArray, как я объяснил в первом абзаце.Я предполагаю, что способ исправить это состоит в том, чтобы callQuery() возвращал массив, но я не знаю, как заставить это работать без жалоб tslint.

Примечание: моя функция callQuery () всегда будетвернуть массив.Так что код работает правильно, это просто tslint, который дает мне ошибки.

1 Ответ

0 голосов
/ 12 сентября 2018

Если вы специально хотите вернуть строку [], вам нужно будет вернуть обещание с универсальным типом (в данном случае строка []).

Также, как сказал Сирко, использование async / await будетне действуют, когда вы уже создаете новое обещание.

callQuery(): Promise<string[]> {
    ...handlePromise
}    
...