Формулировка инструкций по переходу на rxjs 5–6, а также сообщения в блогах, такие как этот подразумевает, что просто имея «rxjs-compat» в качестве зависимости нашего проекта вместе с «rxjs», тогда наблюдаемые, субъекты и т. д., импортированные из «rxjs», будут совместимы с устаревшими операторами. например. Observable.of(3, 4, 5).concatMap(num => {/*...*/})
. Однако, похоже, это не наш случай. Все работает так, как и ожидалось, если мы импортируем напрямую из «rxjs-compat», что не похоже на предполагаемый путь миграции, а также неудобно, поскольку объявления TypeScript для «rxjs» более полны и имеют импорт для обоих « rxjs» и «rxjs-compat» в одном и том же файле будут немного раздражать при очистке в будущем. Есть ли дополнительный шаг или ожидается импорт из «rxjs-compat»?
Импорт из rxjs с rxjs-compat в качестве дополнительной зависимости не делает совместимые Observables
Ответы (1)
Просто реорганизуйте свой код и не используйте уровень совместимости.
Observable.of(3, 4, 5).concatMap(num => {/*...*/})
становится
of(3, 4, 5).pipe(concatMap(num => {/*...*/}))
Вам будет гораздо лучше сделать рефакторинг заранее.
person
Adrian Brand
schedule
07.03.2019
К сожалению, кодовая база довольно велика, и привлекательность rxjs-compat заключается в том, что она обеспечивает прогрессивную миграцию, а не требует от нас изменения всего сразу.
- person anomico; 07.03.2019
Я думал о том же, когда мы обновлялись с Angular 5 до 6. Я собирался использовать слой совместимости, но мой руководитель сказал мне не делать этого. Я рад, что мы сделали это именно так. Компилятор сказал мне, где все, что нужно было исправить, и это было сделано за полдня. Я думаю, что усилия того стоили.
- person Adrian Brand; 08.03.2019