switchMap не расширяет массив, поэтому в вашей функции сокращения e! = T, но e = T [].
Используйте оператор groupBy в RxJS.
См. пример ниже
export const groupAlphabetical = (observable: Observable<hasName[]>) => observable.pipe(
flatMap(x => x),
groupBy(x => x.name[0],x=> x),
mergeMap( (group$) => group$.pipe(reduce((acc, cur) =>{
acc.items = [...acc.items, cur];
return acc;
}, {
letter: group$.key,
items:[]
})))
);
интерфейс hasName:
export interface hasName {
name: string;
}