javascript - TypeScript 异步迭代对象错误

标签 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 一样编译它时,我有这个:

错误:async.ts(7,10):错误 TS2339:类型“{}”上不存在属性“forEach”。

最佳答案

实际上我找到了解决方案 ,我们可以简单地将泛型类型添加到我们的 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();

现在它可以完美运行,代码中没有任何困惑:)

关于javascript - TypeScript 异步迭代对象错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38815849/

相关文章:

javascript - 选择 flask 中的文件

javascript - 当我想使用外部 "_this is undefined"关键字时出现 "this"错误

Javascript:无法使用 $ ('id' 获取元素)

javascript - 在 typescript 中过度使用 'this'

Angular 2 FormBuilder 类型

javascript - 如果我拒绝具有另一个 Promise 值的 Promise 会怎样?

typescript - Ionic 2 document.getElementById 返回 null

javascript - 从字符串中删除字符串

javascript - 导出默认值和导出{默认}之间的区别

javascript - => 在 JavaScript 中是什么意思? (等于大于)