According to the documentation :
mergeAll<O extends ObservableInput>(concurrent: number = Infinity): OperatorFunction<O, ObservedValueOf> Returns
OperatorFunction<O, ObservedValueOf>: A function that returns an Observable that emits values coming from all the inner Observables emitted by the source Observable.
If I am not mistaken this mean that the mergeAll method Flattens an Observable-of-Observables. So mergeAll takes an Observable-of-Observables as input.
https://rxjs.dev/api/operators/mergeAll
But, according to code sample :
personWithAddress$ = this.persons$.pipe(
mergeAll(), // flatten to Observable<Person>
);
If I am not mistaken, we have mergeAll<Persons[]>() where a Observable-of-Observables is expected.
persons$ = this.service.get(selectPersons);
// ^? Observable<Persons[]> where Person = {id: number, name: string}
https://dev.to/this-is-angular/managing-array-of-observables-3alf
Well actually, the docs state that the signature is:
And
ObservableInputis:And
ObservedValueOfis:And finally,
OperatorFunctionis:Which makes
Observable<T[]>a valid input asT[]satisfiesArrayLike<T>which in turn satifiesObservableInput<T>, and thus the input would beOperatorFunction<T[], T>which is simply a function of signature(arg: Observable<T[]>) => Observable<T>.