Чтобы сделать свой код 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 };
}),
}
и ошибка исчезла. Хотелось бы понять, что я делал не так в предыдущей версии, и это надо будет решить.