Angular 9 项目在使用安全空访问和空合并时突然抛出编译错误?

Mic*_*elB 5 typescript zonejs angular-cli angular

所以这是我遇到的最奇怪的事情,因为这个项目昨天运行得非常好,事实上,我什至在前一天完成工作时“ng serve”仍在运行,一切都很好。

今天来,没有任何变化,尽管我在 3.7.3 全局和 3.8.3 本地运行 angular 项目,但由于 typescript 3.7.2 功能,我无法再编译应用程序。我还在 zone.js 中使用 async/await 收到了一个奇怪的警告,尽管我还没有在我的项目中的任何地方使用 async await —— 不过在过去的 angular 项目中使用 async/await 没有遇到问题。

错误:

WARNING: Zone.js does not support native async/await in ES2017.
Run Code Online (Sandbox Code Playgroud)

Module parse failed: Unexpected token (17:38)
>             const address = !!company?.address;
>             if (company?.address) {
Run Code Online (Sandbox Code Playgroud)

它继续指向整个应用程序中的类似内容。现在这个应用程序是在几周前使用 angular cli 9 生成的,我的 tsconfig 没有使用:

        "module": "esnext",
        "moduleResolution": "node",
        "target": "esnext",
        "lib": ["es2018", "dom"]
Run Code Online (Sandbox Code Playgroud)

我很确定这不是我在项目本身中做的任何事情,而是项目是如何编译的,但遗憾的是我不知道在哪里看或我错过了什么,所以任何帮助/建议都非常感谢。

编辑:

删除了本地项目,从 git 复制回来,使用 TS 3.9.5 和相同的问题更新到 angular 10。

小智 0

“exnext”包含 ES 中“不”的功能。功能在这里:github.com/Microsoft/TypeScript/tree/master/lib。我认为,对于标准项目,您应该使用 es20** 模块和目标。即: target="es2015" 和 module="es2020" (默认为 angular10)