Типы для функции, возвращающей объект Symbol.asyncIterator
Я создаю класс, который получает массив URL-адресов и использует asyncIterator для обработки этих URL-адресов один за другим. В настоящее время весь код работает, но я хочу явно добавить тип для методов execute() и crawl(), поэтому прошу вашей помощи. заранее спасибо
class Crawlers {
public urls: string[];
constructor(urls: string[]) {
this.urls = urls;
}
private execute(cookie: ICookie) {
const urlsIterator = this.urls[Symbol.iterator]();
return {
async next() {
const iteratorResult = urlsIterator.next();
if (iteratorResult.done) {
return { done: true };
}
const url = iteratorResult.value;
try {
const payload = await request(url, cookie);
return {
done: false,
value: payload,
};
} catch (err) {
const error: IRequestError = {
url,
err: err.message,
};
return {
done: false,
value: error,
};
}
},
};
}
public crawl(cookie: ICookie) {
return {
[Symbol.asyncIterator]: this.execute.bind(this, cookie),
};
}
}