我想在TypeScript中为我的数组创建一个迭代器,我如何修复我的代码以避免出现转换错误?通过仿制药呢?
let array4 = [10, 20, 30];
array4[Symbol.iterator] = function () {
let i = 0;
return {
next: function () {
i++;
return {
value: i < 4 ? array4[i - 1] : undefined,
done: i >= 4 ? true : false
};
}
};
};
let it4 = array4[Symbol.iterator]();
console.log(it4.next());
console.log(it4.next());
console.log(it4.next());
console.log(it4.next());
答案 0 :(得分:0)
像这样:
array4[Symbol.iterator] = function* () {
let i = 0;
while (i < 3) {
i++;
yield array4[i - 1];
}
};
如果您愿意,可以在没有生成器功能的情况下执行此操作,我只需要找到IterableIterator<T>
的正确签名。如果您需要帮助,请告诉我。
答案 1 :(得分:0)
您还可以考虑通用生成器功能。一个简单的例子如下:
INotifyPropertyChanged
希望它有所帮助。
答案 2 :(得分:0)
您可以尝试像这样的图书馆:https://github.com/labs42io/itiriri 然后您可以简单地做到:
q = query([10,20,30]);
q.take(2).toArray(); // [10,20]
q.filter(e => e > 10).toArray(); // [20,30]
等等。