Импорт из rxjs с rxjs-compat в качестве дополнительной зависимости не делает совместимые Observables

Формулировка инструкций по переходу на rxjs 5–6, а также сообщения в блогах, такие как этот подразумевает, что просто имея «rxjs-compat» в качестве зависимости нашего проекта вместе с «rxjs», тогда наблюдаемые, субъекты и т. д., импортированные из «rxjs», будут совместимы с устаревшими операторами. например. Observable.of(3, 4, 5).concatMap(num => {/*...*/}). Однако, похоже, это не наш случай. Все работает так, как и ожидалось, если мы импортируем напрямую из «rxjs-compat», что не похоже на предполагаемый путь миграции, а также неудобно, поскольку объявления TypeScript для «rxjs» более полны и имеют импорт для обоих « rxjs» и «rxjs-compat» в одном и том же файле будут немного раздражать при очистке в будущем. Есть ли дополнительный шаг или ожидается импорт из «rxjs-compat»?


person anomico    schedule 07.03.2019    source источник


Ответы (1)


Просто реорганизуйте свой код и не используйте уровень совместимости.

Observable.of(3, 4, 5).concatMap(num => {/*...*/})

становится

of(3, 4, 5).pipe(concatMap(num => {/*...*/}))

Вам будет гораздо лучше сделать рефакторинг заранее.

person Adrian Brand    schedule 07.03.2019
comment
К сожалению, кодовая база довольно велика, и привлекательность rxjs-compat заключается в том, что она обеспечивает прогрессивную миграцию, а не требует от нас изменения всего сразу. - person anomico; 07.03.2019
comment
Я думал о том же, когда мы обновлялись с Angular 5 до 6. Я собирался использовать слой совместимости, но мой руководитель сказал мне не делать этого. Я рад, что мы сделали это именно так. Компилятор сказал мне, где все, что нужно было исправить, и это было сделано за полдня. Я думаю, что усилия того стоили. - person Adrian Brand; 08.03.2019