mind-map
Version:
mind-map for typescript
37 lines (31 loc) • 825 B
text/typescript
// sample observable
export interface IObserver {
closed?: boolean;
next: (value?) => void;
error: (err: any) => void;
complete: () => void;
}
export class Observable {
subscriber
constructor (subscribe: (ob: IObserver) => void) {
this.subscriber = subscribe
}
pipe (...operations) {
return operations.reduce((prev, fn) => fn(prev), this)
}
subscribe (observer) {
const defaultObserver = {
next: () => {
},
error: () => {
},
complete: () => {
},
}
if (typeof observer === 'function') {
return this.subscriber({ ...defaultObserver, next: observer })
} else {
return this.subscriber({ ...defaultObserver, ...observer })
}
}
}