编译打字稿而不转译异步函数

Posted

技术标签:

【中文标题】编译打字稿而不转译异步函数【英文标题】:Compile typescript without transpiling async functions 【发布时间】:2017-02-16 13:37:57 【问题描述】:

有没有办法只使用 TypeScript 编译器来删除类型注释,而不是转译异步函数?类似于 target: 'esInfinite' 选项?原因是:有些浏览器已经支持异步功能,所以我希望有一个不影响这些功能的构建目标。

示例输入:

async function foo(a : number) : Promise<void> 

示例输出:

async function foo(a) 

【问题讨论】:

有一个 pull request 来增加对 ES2017 的支持,但在此之前,据我所知还没有。 【参考方案1】:

here 已请求此功能。目标 es2016 和 es2017 应该在 Community 里程碑和 TypeScript 2.1 中可用。

【讨论】:

我们现在处于 TypeScript 4.3,将“target”设置为“es2017”将保留使用“target”和“es2016”的 async / await 语句将使用 var __awaiter 输出一个 polyfill。【参考方案2】:

在您的tsconfig.json 中,将您的目标更改为ES2017,然后它将保留async/await


  "compilerOptions": 
    .....
    "target": "ES2017",
    .....
  

请确保您的 run-time 本身支持它!!!

PS:截至Apr 2018AWS Lambda 现在支持 Nodejs 8。您应该可以使用上面的配置。

【讨论】:

以上是关于编译打字稿而不转译异步函数的主要内容,如果未能解决你的问题,请参考以下文章

转译器的编译单元的等效名称是啥?

使用 Angular-CLI 进行转译和编译

Ionic 3 错误:无法转译程序

vs 代码不转译 ts 文件

编译器和转译器之间的主要区别是啥?

Node-Sass 不会编译/转译 @use "module"