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