Наблюдаемое значение интервала не может использоваться для арифметической операции c - PullRequest
0 голосов
/ 27 января 2020

Я пытаюсь увеличить интервал между значениями, полученными в 10 раз, чтобы поток результатов был: 10, 20, 30 ... Однако в методе map я не могу умножить его, потому что компилятор выдает ошибку.

const numbers$ = Observable.interval(1000);
numbers$.pipe(
    map((x) => 10 * x)
);

error на строке карты:

The right-hand side of an arithmetic operation must be of type 'any', 'number' or an enum type.

Я также проверил, что x - это тип 'числа';

Где я ошибаюсь?

/ edit

из комментария Инге Олайзен Я изменил код на: map((x) => 10 + +x) и он работает правильно

Могу ли я предположить, что это ошибка компилятора, поскольку он не распознает х как число?

Ответы [ 2 ]

0 голосов
/ 27 января 2020

Из LearnRx Js -Docs :

//emit value in sequence every 1 second
const source = interval(1000);
//output: 0,1,2,3,4,5....
const subscribe = source.subscribe(val => console.log(val));

Вместе с отображением текущего значения:

//emit value in sequence every 1 second
const source = interval(1000);
//output: 0,1,2,3,4,5....
const subscribe = source
  .pipe(map(n => 10 * n))
  .subscribe(val => console.log(val));

Я хотел бы добавить, что Вы должны управлять утилизацией своих наблюдаемых, вот хорошая статья 1010 * об удалении / отмене подписки на наблюдаемые.

0 голосов
/ 27 января 2020

постоянных чисел $ = Observable.interval (1000); numbers $ .pipe (takeUntil (this.unsubscribe)). subscribe ((x) => 10 * x);

Тем не менее, это немного странно, что компилятор жалуется, но вы можете попробовать: const numbers $: Observable = Observable.interval (1000);

unsubscribe - тема, которая вызывает .next () и .complete () в методе ngOnDestroy ().

Карта, которую вы используете, если хотите отобразить данные из одного типа в другой. Обычно, если у вас есть данные, и вы преобразуете их в другую наблюдаемую, которая, в свою очередь, подписывается или использует ее в html в той или иной форме.

Если вы просто хотите использовать полученные данные, тогда вы положить его в подписку.

...