TypeScript: 找不到名为 async/await 的名称

24

我正在使用 typescript@next,并希望将我的代码编译成 es5。但每次我使用 asyncawait 关键字时,编译器都会显示以下错误信息:

Cannot find name 'await'.
这是我的库:domes2015es2016es2017
代码示例:
let asyncFn = () => {
   return new Promise((resolve:Function)=>{resolve(2)})
}
// should log `2`
console.log(await asyncFn())

即使使用typescript@2.0.x, 这些事情仍然是可能的,我尝试过了,但无论如何我仍然无法编译我的代码。


请发布您的代码。您的函数是否标记为 async - Stephen Cleary
不是的,但我不需要将作用域标记为 'async',对吧?据我所知,那只是 Promise 的语法糖。 - roomcayz
2
阅读文档:https://www.typescriptlang.org/docs/release-notes/typescript-1.7.html:“异步函数以async关键字为前缀”。 - user47589
2
@Roomy:asyncawait是一对关键字。除非在async作用域内,否则不能使用await - Stephen Cleary
1个回答

35

你需要在标记为“async”的函数内使用你的asyncFn。例如:

async someAsyncCode() {
    let asyncFn = () => {
        return new Promise((resolve: Function) => { resolve(2); });
    }
    // should log `2`
    console.log(await asyncFn());
}

21
即使是愚蠢的TypeScript编译器也不能提供更好的错误信息,这真是让人震惊。类似于“无法在异步作用域之外使用await”这样的消息就足够了。 - user9993

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接