类型"{}"无法指定为"数字"类型

php*_*_qq 1 javascript async-await typescript

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

async function a(): Promise <number> {
  return 5;
}
Run Code Online (Sandbox Code Playgroud)

这很好,返回一个用结果5解决的promise.

async function a(): Promise <number> {
  return await new Promise(resolve => {
    resolve(5);
  });
}
Run Code Online (Sandbox Code Playgroud)

错误TS2322:类型"{}"不能分配给"数字"类型.
类型"{}"中缺少属性"包含".

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

Sur*_*yan 5

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

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

替换await new Promiseawait new Promise<number>

async function a(): Promise<number> {
  return await new Promise<number>(resolve => {
    resolve(5);
  });
}
Run Code Online (Sandbox Code Playgroud)

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

async function a(): Promise<number> {
      return await 5;
}
Run Code Online (Sandbox Code Playgroud)