You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
It emits the __awaiter and transforms await statements into yield statements, but functions marked async aren't transformed to wrappers around an __awaiter'd generator.
For example,
vara=async()=>awaitPromise.resolve(2);
yields
var__awaiter=(this&&this.__awaiter)||function(thisArg,_arguments,Promise,generator){returnnewPromise(function(resolve,reject){generator=generator.call(thisArg,_arguments);functioncast(value){returnvalueinstanceofPromise&&value.constructor===Promise ? value : newPromise(function(resolve){resolve(value);});}functiononfulfill(value){try{step("next",value);}catch(e){reject(e);}}functiononreject(value){try{step("throw",value);}catch(e){reject(e);}}functionstep(verb,value){varresult=generator[verb](value);result.done ? resolve(result.value) : cast(result.value).then(onfulfill,onreject);}step("next",void0);});};vara=function(){returnyieldPromise.resolve(2);};
when it should probably be
var__awaiter=(this&&this.__awaiter)||function(thisArg,_arguments,Promise,generator){returnnewPromise(function(resolve,reject){generator=generator.call(thisArg,_arguments);functioncast(value){returnvalueinstanceofPromise&&value.constructor===Promise ? value : newPromise(function(resolve){resolve(value);});}functiononfulfill(value){try{step("next",value);}catch(e){reject(e);}}functiononreject(value){try{step("throw",value);}catch(e){reject(e);}}functionstep(verb,value){varresult=generator[verb](value);result.done ? resolve(result.value) : cast(result.value).then(onfulfill,onreject);}step("next",void0);});};vara=function(){return__awaiter(void0,void0,Promise,function*(){returnyieldPromise.resolve(2);});};
The text was updated successfully, but these errors were encountered:
async functions are supported only in ES6 and by default transpile uses ES5. Everything should work fine if you pass ScriptTarget,ES6 through compiler options.
// test.jsvarts=require('typescript');console.log(ts.transpile("var a = async () => await Promise.resolve(2);",{target: ts.ScriptTarget.ES6}))
C:\Sources\1>npm install typescript@next
[email protected] node_modules\typescript
C:\Sources\1>node test.js
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, Promise, generator) {
return new Promise(function (resolve, reject) {
generator = generator.call(thisArg, _arguments);
function cast(value) { return value instanceof Promise && value.constructor === Promise ? value : new Promise(function (resolve) { resolve(value); }); }
function onfulfill(value) { try { step("next", value); } catch (e) { reject(e); } }
function onreject(value) { try { step("throw", value); } catch (e) { reject(e); } }
function step(verb, value) {
var result = generator[verb](value);
result.done ? resolve(result.value) : cast(result.value).then(onfulfill, onreject);
}
step("next", void 0);
});
};
var a = () => __awaiter(this, void 0, Promise, function* () { return yield Promise.resolve(2); });
It emits the
__awaiter
and transformsawait
statements intoyield
statements, but functions markedasync
aren't transformed to wrappers around an__awaiter
'd generator.For example,
yields
when it should probably be
The text was updated successfully, but these errors were encountered: