Javascript Async / Await: «await» не влияет на тип этого выражения - PullRequest
0 голосов
/ 04 мая 2020

каждый.

Я пишу этот очень простой кусок кода как часть курса, который включает в себя асинхронное / ожидание:

displayCustomer();

async function displayCustomer() {
    const customer = await getCustomer();
    console.log(customer);
}


function getCustomer() {
    return new Promise(resolve => {
        setTimeout(() => {
            resolve({
                id: 1,
                name: 'John Doe'
            });
        }, 4000);  
    });
}

Код работает как задумано, но Visual Studio Код продолжает выдавать предложение: «await» не влияет на тип этого выражения.

Я знаю, что await ожидает обещание, которое является возвращаемым значением getCustomer, поэтому я что-то упустил? Или это просто ошибка в редакторе кода?

1 Ответ

0 голосов
/ 04 мая 2020

Как уже упоминалось в комментариях к OP, я также не смог воспроизвести проблему. Вот ссылка на TypeScript Playground , где я пытался.

Я предполагаю, что каким-то образом , TypeScript не может вывести тип возврата getCustomer() (что неверно для версии игровой площадки, где легко выводится тип Promise<unknown>).

Вы можете попытаться явно указать тип возвращаемого значения в сигнатуре функции:

interface User {
  id: number
  name: string
}

function getCustomer(): Promise<User> {
  return new Promise(resolve => {
    setTimeout(() => {
      resolve({ id: 1, name: 'John Doe' });
    }, 4000);  
  });
}

PS Это определенно что-то не так с вашей настройкой, попробуйте воспроизвести его на TypeScript Playground и поделиться ссылкой. Это поможет нам помочь вам.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...