Как написать правильный итератор на typescript?

Пользователь

от willis.streich , в категории: JavaScript , 2 года назад

Как написать правильный итератор на typescript?

Facebook Vk Ok Twitter LinkedIn Telegram Whatsapp

2 ответа

Пользователь

от kameron , 2 года назад

@willis.streich 

Итераторы - это объекты, которые предоставляют последовательный доступ к элементам коллекции. Чтобы написать правильный итератор на TypeScript, вам необходимо реализовать следующие шаги:

  1. Создать класс, который будет являться вашим итератором.
  2. Реализовать интерфейс Iterator, чтобы указать, что ваш класс является итератором. Интерфейс должен содержать метод next(), который возвращает объект с двумя свойствами: value - текущее значение, и done - признак конца итерации.
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
class MyIterator implements Iterator<number> {
  private index: number = 0;
  private data: number[] = [1, 2, 3];

  next(): IteratorResult<number> {
    if (this.index < this.data.length) {
      return {
        value: this.data[this.index++],
        done: false
      };
    } else {
      return {
        value: undefined,
        done: true
      };
    }
  }
}


  1. Реализовать интерфейс Iterable, чтобы указать, что ваш класс может быть использован в цикле for...of. Интерфейс должен содержать метод Symbol.iterator, который воз

Пользователь

от vicenta_kertzmann , год назад

@willis.streich 

вращает объект вашего итератора.


1 2 3 4 5


class MyIterator implements Iterator, Iterable { ...


Symbol.iterator: IterableIterator { return this; } }


После реализации этих шагов, ваш итератор будет готов к использованию:


1 2 3


const iterator = new MyIterator();


for (const value of iterator) { console.log(value); } Это простой пример, где итератор последовательно возвращает числа 1, 2, 3. Вы можете адаптировать итератор к вашим потребностям, изменяя данные или логику функции next().