[typescript] RxJS 연산자

RxJS는 Observable 시퀀스를 조작하고 다루는데 사용되는 다양한 연산자를 제공합니다. 이 연산자들을 활용하면 Observable에서 데이터를 필터링하거나 변환하고, 시간 지연을 적용하거나 여러 개의 Observable을 결합하는 등의 다양한 작업을 수행할 수 있습니다. 이번에는 몇 가지 주요 RxJS 연산자에 대해 살펴보겠습니다.

1. 필터링 연산자

Observable에서 특정 조건을 만족하는 데이터만을 걸러내는데 사용되는 필터링 연산자들이 있습니다.

import { of } from 'rxjs';
import { filter, take, takeUntil, distinctUntilChanged } from 'rxjs/operators';

const source = of(1, 2, 2, 3, 3, 3, 4, 5);
source.pipe(
  filter(val => val % 2 === 0),
  take(2),
).subscribe(console.log);

// 출력: 2 2

2. 변환 연산자

Observable에서 데이터를 변환하거나 가공하는 데 사용되는 변환 연산자들이 있습니다.

import { from } from 'rxjs';
import { map, scan, pluck } from 'rxjs/operators';

const source = from([{ name: 'Alice' }, { name: 'Bob' }, { name: 'Charlie' }]);
source.pipe(
  pluck('name'),
  map(name => name.toUpperCase()),
  scan((acc, val) => `${acc}, ${val}`),
).subscribe(console.log);

// 출력: ALICE, BOB, CHARLIE

3. 결합 연산자

여러 개의 Observable을 결합하여 새로운 Observable을 생성하는데 사용되는 결합 연산자들이 있습니다.

import { interval, merge } from 'rxjs';
import { take } from 'rxjs/operators';

const source1 = interval(1000).pipe(take(3));
const source2 = interval(500).pipe(take(6));

merge(source1, source2).subscribe(console.log);

// 출력: 0 0 1 1 2 0 3 2 1 4 3 5

여기서는 일부만을 다루었지만, RxJS는 이외에도 다양한 연산자들을 제공하고 있습니다. 이러한 연산자들은 Observable을 다룰 때 매우 유용하며, 개발자들은 쉽게 그 활용 방법을 익히고 적용할 수 있습니다.

더 많은 RxJS 연산자와 활용 예제는 RxJS 공식 문서에서 확인할 수 있습니다.