import { Observable } from '../observable.js' export function filter( this: Observable, fn: (val: T) => val is U ): Observable export function filter( this: Observable, fn: (val: T) => boolean, ): Observable { return new Observable(({next, error, complete}) => this.subscribe({ next: val => { if (fn(val)) return next(val) }, error, complete, }) ) } Observable.prototype.filter = filter declare module '../observable.js' { export interface Observable { filter: typeof filter } }