Ошибка TS2339: Свойство «таймер» не существует для типа «Наблюдаемый».'switchMap' и 'takeUntil' прерывают поток - PullRequest
0 голосов
/ 15 июня 2019

Перемещено в angular8, rxjs6.таймер, switchMap, комбинировать последние, методы взлома.Попытка решить, что заполняются свойства CopperLatest или Timer, нарушает поток других свойств.

Первоначальный код разрывается в Разделе, исправляет его Ошибка TS2339: Свойство «раздел» не существует для типа «Наблюдаемый »

      init(): void {
        const source = this.store.select(state => state.tether.isTiming);
        const partition = (predicate) => [source.pipe(filter(predicate)), source.pipe(filter((x, i) => !predicate(x, i)))]

        const [isTiming$, isNotTiming$] = partition(value => value);

        const partialInterval$ = this.store.select(state => state.tether.partialInterval);
        const interval$ = this.store.select(state => state.tether.interval);


                  isTiming$
        .combineLatest(interval$, (isTiming, interval) => interval)
        .withLatestFrom(partialInterval$)
        .switchMap(([interval, partialInterval]) => {
            return timer(partialInterval, interval)
                .takeUntil(isNotTiming$);
        })
        .subscribe(() => {
            this.store.dispatch(softDrop(true));
        });

      }

перезаписываем это с перерывами в трубопроводе.

    isTiming$
        .combineLatest(interval$, (isTiming, interval) => interval)
        .withLatestFrom(partialInterval$)
        .switchMap(([interval, partialInterval]) => {
            return timer(partialInterval, interval)
                .takeUntil(isNotTiming$);
        })
        .subscribe(() => {
            this.store.dispatch(softDrop(true));
        });

ошибка TS2339: свойство 'timer' не существует для типа 'typeof Observable'.

ошибка TS2339: для типа «Observable» не существует свойства «lateLatest ».

ошибка TS2339: для типа« Observable »не существует свойства« withLatestFrom ».

1 Ответ

1 голос
/ 15 июня 2019

Теперь в новых RX-6 timer и combineLatest теперь является частью основного модуля rxjs, а withLatestFrom доступен в rxjs/operators module

См .: timer, ОбъединитьПоследний и withLatestFrom

В вашем случае следующая реализация будет работать

init(): void {
    const source = this.store.select(state => state.tetris.isTiming);
    const partition = (predicate) => [source.pipe(filter(predicate)), source.pipe(filter((x, i) => !predicate(x, i)))]

    const [isTiming$, isNotTiming$] = partition(value => value);

        const partialInterval$ = this.store.select(state => state.tetris.partialInterval);
        const interval$ = this.store.select(state => state.tetris.interval);


            combineLatest(interval$, (isTiming, interval) => interval).pipe(
              withLatestFrom(partialInterval$), switchMap(([interval, partialInterval]) => {
          return timer(partialInterval, 1000).pipe(takeUntil(isNotTiming$));
      })
        )
            .subscribe(() => {
                this.store.dispatch(softDrop(true));
            });

    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...