TS2488 Предоставление Symbol.iterator () в пользовательском операторе rx js - PullRequest
0 голосов
/ 19 июня 2020

Чтобы сделать свой код DRY, я решил сделать свой собственный оператор rx js. Наблюдаемый источник всегда содержит массив из двух элементов, поэтому при декомпозиции массива я делаю следующее предположение:

function unwrap() {
  return function<T>(source: Observable<T>) {
    return source.pipe(
      map(([item0, item1]) => {
        const name = item0.name;
        const address = item1.address;
        return { name, address };
      }),
    );
  };
}

Он работает так, как ожидалось, но я получаю сообщение об ошибке TS2488, в котором говорится, что Type ' T 'должен иметь метод Symbol.iterator (), который возвращает итератор

Поскольку я в основном использую один оператор для создания другого, я упростил код до следующего:

function unwrap() {
  return map(([item0, item1]) => {
    const name = item0.name;
    const address = item1.address;
    return { name, address };
  }),
}

и ошибка исчезла. Хотелось бы понять, что я делал не так в предыдущей версии, и это надо будет решить.

...