export interface NextObserver { closed?: boolean; next: (value: T) => void; error?: (err: any) => void; complete?: () => void; } export interface ErrorObserver { closed?: boolean; next?: (value: T) => void; error: (err: any) => void; complete?: () => void; } export interface CompletionObserver { closed?: boolean; next?: (value: T) => void; error?: (err: any) => void; complete: () => void; } export type PartialObserver = NextObserver | ErrorObserver | CompletionObserver; export interface Observer { closed?: boolean; next: (value: T) => void; error: (err: any) => void; complete: () => void; } export const empty: Observer = { closed: true, next(value: any): void { /* noop */}, error(err: any): void { throw err; }, complete(): void { /*noop*/ } };