2016-11-03 13 views
13

bekliyor ve ben es5 için kodumu derlemek istiyorum ama async veya await kullanıyorum her zaman o mesajla derleyici hatalarını anahtar kelimeler:typescript: adı asenk bulamıyorum/I <code>[email protected]</code> kullanıyorum

Cannot find name 'await'. 

Heres benim lib'larım: dom, es2015, es2016, es2017.

Kod örnek:

let asyncFn =() => { 
    return new Promise((resolve:Function)=>{resolve(2)}) 
} 
// should log `2` 
console.log(await asyncFn()) 

Böyle şeyler bile [email protected] ile mümkündür, bunu denedim, ama nedense ben yine benim kodu derlemek kuramıyorum.

+0

Lütfen kodunuzu gönderin. İşleviniz "async" ile işaretlenmiş mi? –

+0

hayır, öyle değil ama kapsamımı 'async' olarak işaretlemem gerekmiyor, değil mi? 'Promise' – Roomy

+2

için sadece sözdizimsel bir şeker olan afaik [Dokümantasyonunu oku] (https://www.typescriptlang.org/docs/release-notes/typescript-1.7.html): "Eşzamansız fonksiyonlar async anahtar kelimesi ile önceliğe sahiptir" – Amy

cevap

18

AsyncFn'nizi 'async' işlevi olarak işaretlenmiş bir işlev içinde kullanmanız gerekir. Örneğin,

async someAsyncCode() { 
    let asyncFn =() => { 
     return new Promise((resolve: Function) => { resolve(2); }); 
    } 
    // should log `2` 
    console.log(await asyncFn()); 
} 
+9

Aptal TypeScript derleyicisinin bile daha iyi bir hata mesajı veremediğini hayrete düşürüyor. Bekleme gibi bir şey, bir uyumsuzluk kapsamı dışında kullanılamaz. – user9993