Observables — важный компонент реактивного программирования в TypeScript. Они предоставляют мощный способ обработки асинхронных потоков данных и обеспечивают эффективную обработку событий. Однако при работе с Observables вы можете столкнуться с такими ошибками, как «Свойство ‘map’ не существует для типа ‘Observable
- map():
Оператор карты преобразует каждое выдаваемое значение Observable в другое значение с помощью функции сопоставления. Он возвращает новый Observable с преобразованными значениями.
import { Observable } from 'rxjs';
const source = new Observable<number>((observer) => {
observer.next(1);
observer.next(2);
observer.next(3);
});
const mapped = source.pipe(map((value) => value * 2));
mapped.subscribe((value) => console.log(value));
// Output: 2, 4, 6
- filter():
Оператор фильтра фильтрует значения, выдаваемые Observable, на основе функции-предиката. Он возвращает новый Observable, который выдает только значения, для которых предикат возвращает true.
import { Observable } from 'rxjs';
const source = new Observable<number>((observer) => {
observer.next(1);
observer.next(2);
observer.next(3);
});
const filtered = source.pipe(filter((value) => value % 2 === 0));
filtered.subscribe((value) => console.log(value));
// Output: 2
- mergeMap():
Оператор mergeMap объединяет Observable высшего порядка в один Observable. Он применяет функцию проекции к каждому выдаваемому значению и объединяет полученные Observables в одно.
import { Observable } from 'rxjs';
const source = new Observable<number>((observer) => {
observer.next(1);
observer.next(2);
observer.next(3);
});
const merged = source.pipe(
mergeMap((value) => {
return new Observable<number>((innerObserver) => {
innerObserver.next(value * 2);
innerObserver.next(value * 3);
});
})
);
merged.subscribe((value) => console.log(value));
// Output: 2, 3, 4, 6, 6, 9
- catchError():
Оператор catchError обрабатывает ошибки, возникающие в Observable, и либо заменяет их новым Observable, либо повторно выдает новую ошибку.
import { Observable, of } from 'rxjs';
const source = new Observable<number>((observer) => {
observer.next(1);
observer.next(2);
observer.next(3);
observer.error('Something went wrong');
});
const caught = source.pipe(catchError((error) => of('Error occurred: ' + error)));
caught.subscribe((value) => console.log(value));
// Output: Error occurred: Something went wrong
Это лишь несколько часто используемых методов с Observables в TypeScript. Observables предоставляют широкий спектр операторов и методов для эффективного манипулирования данными и обработки событий в реактивном программировании.
Observables — ключевая часть реактивного программирования в TypeScript, предоставляющая мощные механизмы для обработки асинхронных потоков данных. В этой статье мы рассмотрели четыре распространенных метода, используемых с Observables: map(), filter(), mergeMap() и catchError(). Понимая и эффективно используя эти методы, вы сможете использовать весь потенциал Observables в своих приложениях TypeScript.