2016-08-07 8 views
1

このコードが私に誤りをもたらす理由を誰かが説明できますか?TypeScript非同期オブジェクトエラーでの反復

var promise = new Promise((resolve, reject) => { 
    resolve([1, 2, 3, 4, 5]); 
}); 

async function doSomethingAsync() { 
    var data = await promise; 
    data.forEach(v => console.log(v)); 
} 

doSomethingAsync(); 

私はTSC file.ts --target ES6のようにこれをコンパイルしようとすると私は、この持っている:

error:async.ts(7,10): error TS2339: Property 'forEach' does not exist on type '{}'.

+1

'' New Promise(...) 'を' 'New Promise (...)'に変更するとどうなりますか?おそらく、型チェッカーは、単に「約束」のための十分に具体的な型を推論することはできませんか? –

+0

ところで、 'async'と' await' es7の機能はありませんか? – Michelangelo

+0

AFAIKですが、実際には安定しておらず、今後変更される予定です。 – user3075373

答えて

1

は、実際に私は解決策 を発見し、我々は単ににジェネリック型を追加することができます以下のように私たちの約束:

'use strict'; 

var promise = new Promise<any[]>((resolve, reject) => { 
    resolve(["gdfgdfgdf", "dfggfd", 1, 2, {}]); 
}); 

async function doSomethingAsync() { 
    let data = await promise; 

    for (let i of data) { 
     console.log(i); 
    } 
} 

doSomethingAsync(); 

は、今では、コード内の任意の混乱せずに完璧に動作します:)

+1

私は見るので、タイプチェッカーはあなたの約束が配列で解決されることを知る必要がありました。ニースを見つける! –

関連する問題