why Symbol(observable) and @@observable exist?
coolxv opened this issue · comments
coolxv commented
Bug Report
Current Behavior
webSocket(url) exist Symbol(observable) property
new Observable or mergeMap exist @@observable property
typeof result[Symbol_observable] can only judge one property
TypeError: You provided an invalid object where a stream was expected. You can provide an Observable, Promise, Array, or Iterable.
export const subscribeTo = <T>(result: ObservableInput<T>): (subscriber: Subscriber<T>) => Subscription | void => {
if (!!result && typeof result[Symbol_observable] === 'function') {
return subscribeToObservable(result as any);
} else if (isArrayLike(result)) {
return subscribeToArray(result);
} else if (isPromise(result)) {
return subscribeToPromise(result);
} else if (!!result && typeof result[Symbol_iterator] === 'function') {
return subscribeToIterable(result as any);
} else {
const value = isObject(result) ? 'an invalid object' : `'${result}'`;
const msg = `You provided ${value} where a stream was expected.`
+ ' You can provide an Observable, Promise, Array, or Iterable.';
throw new TypeError(msg);
}
Expected behavior
There is only one,Symbol(observable) or @@observable
Environment
- Runtime: Chrome v79
- RxJS version:6.4.0
Nicholas Jamieson commented
Symbol.observable
is the interop point for different observable implementations. See https://github.com/tc39/proposal-observable#api