类型“{}”无法指定为“数字”类型

时间:2017-09-15 06:02:02

标签: javascript typescript async-await

所以我理解async / await背后的想法只是使用promises的一种更漂亮的方式,但显然我并没有正确理解它。

async function a(): Promise <number> {
  return 5;
}

这很好,返回一个用结果5解析的承诺。

async function a(): Promise <number> {
  return await new Promise(resolve => {
    resolve(5);
  });
}
  

错误TS2322:类型“{}”不能指定为“数字”类型   “{}”类型中缺少属性“包含”。

根据我的理解,等待将等待承诺解决并返回结果,在这种情况下是5并且应该如上例所示?

1 个答案:

答案 0 :(得分:5)

默认情况下,new Promise()相当于new Promise<{}>

你内心的Promise不是一个数字,而是一个对象。您需要确保编译器它是一个带有类型编号的Promise。

await new Promise替换为await new Promise<number>

async function a(): Promise<number> {
  return await new Promise<number>(resolve => {
    resolve(5);
  });
}

并检查您的代码,我认为您可以在没有中间承诺的情况下使用您的代码

async function a(): Promise<number> {
      return await 5;
}