13

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) {}
1
  • 1
    There's a pull request to add support for ES2017, but until that lands, not as far as I am aware. Commented Oct 7, 2016 at 16:49

3 Answers 3

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.

Sign up to request clarification or add additional context in comments.

Comments

0

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

1 Comment

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.
0

I made a quick hack to override the metro-react-native-babel-preset npm package using a public git repo. I replaced the following in the package.json file under devDependencies:

    "metro-react-native-babel-preset": "^0.73.9",

with...

    "metro-react-native-babel-preset": "github:svpease/metro-react-native-babel-preset-minus-async#v1.0.1",

..which strips out the async-to-generator plugin so that async functions could finally be detected using code like the following:

(() => {}).constructor.name === 'Function'; // true
Object.getPrototypeOf(async () => {}).constructor.name === 'AsyncFunction'; // true

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.