我有一个生成器方法,它异步地向数组添加一些东西,最后产生每个成员,yield* array如下所示:
while (!done) {
await promise;
yield* results; //<-- the array
results = []; //its emptied so as to not to yield dupes
done = !this.#eventsListened.has(eventName);
}
Run Code Online (Sandbox Code Playgroud)
然而,我们友好的邻居 tsc 报告了一个错误,我什至无法理解它或如何修复它。任何人都可以解释这个错误是什么意思,然后我应该如何产生数组的内容?
TS2766:无法将迭代委托给 value,因为其迭代器的“next”方法需要类型“undefined”,但包含生成器将始终发送“unknown”。
编辑:整个生成器功能如下
/**
* Returns an iterator that loops over caught events
* @yields Promise<Event|CustomEvent>
*/
async *on(eventName: string, options?: AddEventListenerOptions): AsyncGenerator<Event> {
if (this.#eventsListened.has(eventName)) {
return;
}
let results: Event[] = [];
let resolve: (value?: PromiseLike<Event> | Event) => void;
let promise = new …Run Code Online (Sandbox Code Playgroud)