Describe the bug
The following code shows a weird behavior of .pipe():
const RxJs = require('rxjs');
const mySubj$ = new RxJs.Subject();
const doubled$ = mySubj$.pipe(
RxJs.map((v) => v * 2),
);
mySubj$.subscribe((value) => {
console.log('Original value:', value);
});
doubled$.subscribe((value) => {
console.log('Doubled value:', value);
});
mySubj$.next(1); // Logs:
// ✅ `Original value: 1`
// ✅ `Doubled value: 2`
doubled$.next(3); // Logs:
// ❌ `Original value: 3`
// ❌ `Doubled value: 6`
There's an inconsistency in the APIs exposed by doubled$:
.subscribe() applies the observable returned by the .pipe()
.next() applies to source of the .pipe() (mySubj$).
Expected behavior
I would expect .next() to fail with not a function.
According to the types, .pipe() returns an Observable (where .next() is not available).
Reproduction code
const RxJs = require('rxjs');
const mySubj$ = new RxJs.Subject();
const doubled$ = mySubj$.pipe(
RxJs.map((v) => v * 2),
);
mySubj$.subscribe((value) => {
console.log('Original value:', value);
});
doubled$.subscribe((value) => {
console.log('Doubled value:', value);
});
mySubj$.next(1); // Logs:
// ✅ `Original value: 1`
// ✅ `Doubled value: 2`
doubled$.next(3); // Logs:
// ❌ `Original value: 3`
// ❌ `Doubled value: 6`
Reproduction URL
No response
Version
7.8.2
Environment
No response
Additional context
Currently, this is the workaround to achieve this:
const doubled$ = mySubj$.asObservable().pipe(
Describe the bug
The following code shows a weird behavior of
.pipe():There's an inconsistency in the APIs exposed by
doubled$:.subscribe()applies the observable returned by the.pipe().next()applies to source of the.pipe()(mySubj$).Expected behavior
I would expect
.next()to fail with not a function.According to the types,
.pipe()returns anObservable(where.next()is not available).Reproduction code
Reproduction URL
No response
Version
7.8.2
Environment
No response
Additional context
Currently, this is the workaround to achieve this: