В TypeScript у меня есть два следующих класса.
class BaseIter {
constructor(public a: number, public b: number, public c: number, public d: number){}
*[Symbol.iterator](): Iterator<number> {
yield this.a
yield this.b
yield this.c
yield this.d
}
}
class MyIter extends BaseIter {
get total() {
return this.a + this.b + this.c + this.d
}
*[Symbol.iterator](): Iterator<number> {
for(let x of this){
yield x
}
yield this.total
}
}
const myIter = new MyIter(1, 2, 3, 4);
for (let n of myIter){
console.log(n);
}
Класс BaseIter
принимает четыре аргумента и возвращает эти четыре аргумента при повторении. У меня есть дочерний класс, который расширяет BaseIter
, который должен использовать родительскую функцию итерации, но также дает дополнительное значение (общее). Текущий код не работает - он вызывает бесконечную рекурсию (повторение this
вызывает ту же функцию, а не базовую функцию). Я пробовал разные методы super
, но безуспешно.
Я ожидаю, что это произведет
1
2
3
4
10
Любые идеи?
super.method()
. - person blitzmann   schedule 17.07.2019