TypeScript - 异步函数前缀的'Unexpected token'



我在打字稿中收到"意外令牌"错误,我正在尝试编写这样的异步函数:

async function test() {
  ...
}

我已经看到这可能是由于运行不支持异步函数语法的旧版本的节点引起的,但我运行的是版本 8。

只是为了消除我的节点版本不支持此功能的任何可能性,我刚刚更新到版本 9.11.1,检查它是否在命令行中使用,并且异步前缀仍然返回意外的令牌错误。

这种语法很好:

async function foo() {
    throw new Error('Just an example');
}

。但是,如果您尝试在 function 关键字无效的上下文中使用它,它将无法编译,甚至不是有效的 JavaScript。例如,这些是无效的:

class Foo {
  async function foo() {
    // Syntax error!
  }
}
const blah = {
  async function foo() {
    // Syntax error!
  }
}

以这种方式使用async function可以声明函数,但不能定义方法。对于方法,您需要省略 function 关键字:

class Foo {
  async foo() {
  }
}
const blah = {
  async foo() {
  }
}

。或使用函数表达式:

const blah = {
  foo: async function () {
  }
}

截至节点 12.16.3 仍然遇到这种情况

解决方案是删除 function 标记并使用以下语法:

async test() {
  // Function body
}

相关内容

最新更新