我遇到了一个错误,上面写着
Type must have a '[Symbol.iterator]()' method that returns an iterator.
它希望在分界线上:
class Test {
private async do() {
const done = [...(await this.test())]; // Here's the error
}
private async *test(): AsyncIterableIterator<string> {
return;
}
}
我在 TypeScript GitHub 存储库中发现了一些问题,但似乎没有任何帮助。他们都建议向 lib
添加新条目。我正在使用 es6
目标并添加了 esnext
, dom
和 es2018
这对错误的影响为零。
我是否错过了更多 lib
条目(我怀疑我使用的是包含所有内容的包罗万象的条目)还是我使用的代码无效?
原文由 Tomáš Hübelbauer 发布,翻译遵循 CC BY-SA 4.0 许可协议
正如我在上面评论的那样,不幸的是,异步迭代器目前不支持扩展运算符。 GitHub 中的相关问题是 tc39/proposal-async-iteration#103 。
回顾那个问题(减去无关的东西,例如“你可以这样做,哎呀,你不能,没关系”):
@jedwards1211 说:
@domenic 回答:
而且我在其他地方看不到提案(想 开始一个?)。无论如何,由于它甚至不是 JavaScript ESNext 的一部分,它很可能不会被添加到 TypeScript 中。
最可行的替代方案是
for await
语法在 @estus 的答案 中详述。抱歉,我无法提供更多帮助。祝你好运!