TypeScript异步迭代对象错误

时间:2016-08-07 15:49:25

标签: javascript typescript ecmascript-6

有人可以解释一下为什么这段代码会给我错误吗?

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 个答案:

答案 0 :(得分:1)

其实我找到了解决方案 ,我们可以简单地在我们的Promise中添加泛型类型,如:

'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();

现在它完美无缺,代码中没有任何混乱:)