Anda benar, dokumentasi tidak memiliki metode tersebut. Namun ketika saya menggali ke dalam repositori rxjs, saya menemukan komentar bagus tentang tap (terlalu panjang untuk ditempel di sini) dan operator pipa :
/**
* Used to stitch together functional operators into a chain.
* @method pipe
* @return {Observable} the Observable result of all of the operators having
* been called in the order they were passed in.
*
* @example
*
* import { map, filter, scan } from 'rxjs/operators';
*
* Rx.Observable.interval(1000)
* .pipe(
* filter(x => x % 2 === 0),
* map(x => x + x),
* scan((acc, x) => acc + x)
* )
* .subscribe(x => console.log(x))
*/
Secara singkat:
Pipa : Digunakan untuk menjahit operator fungsional menjadi sebuah rantai. Sebelumnya kita bisa melakukannya observable.filter().map().scan(), tetapi karena setiap operator RxJS adalah fungsi mandiri daripada metode Observable, kita perlu pipe()membuat rantai operator tersebut (lihat contoh di atas).
Ketuk : Dapat melakukan efek samping dengan data yang diamati tetapi tidak mengubah aliran dengan cara apa pun. Sebelumnya disebut do(). Anda dapat menganggapnya seolah-olah observable adalah array dari waktu ke waktu, maka tap()akan menjadi setara dengan Array.forEach().