Compile typescript without transpiling async functions
Asked Answered
A

2

12

Is there a way to use the TypeScript compiler only to remove type annotations, but not transpiling async functions? Something like a { target: 'esInfinite' } option? The reason is: There are browsers that already support async functions, so I wish to have a build target where those functions are not affected.

example input:

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

example output:

async function foo(a) {}
Audit answered 7/10, 2016 at 14:4 Comment(1)
There's a pull request to add support for ES2017, but until that lands, not as far as I am aware.Nabala
H
20

In your tsconfig.json, change your target to ES2017, then it will preserve the async/await.

{
  "compilerOptions": {
    .....
    "target": "ES2017",
    .....
  }
}

DO make sure your run-time supports it natively!!!

PS: as of Apr 2018, AWS Lambda now supports Nodejs 8. You should be able to use the above config for it.

Histogen answered 30/4, 2018 at 23:41 Comment(0)
A
0

This feature was already requested here. Targeting es2016 and es2017 should be available in the Community milestone and in TypeScript 2.1.

Audit answered 17/10, 2016 at 10:38 Comment(1)
We are now at TypeScript 4.3 and setting "target" to "es2017" will preserve async / await statements using "target" with "es2016" will output a polyfill using var __awaiter.Cornetcy

© 2022 - 2024 — McMap. All rights reserved.