export type IUnsubscriber = () => void; export interface ISubscription { unsubscribe: IUnsubscriber; add(item: ISubscription | IUnsubscriber): ISubscription; } export interface IObservable { subscribe(listener: IListener, error?: IListener): ISubscription; /** * @deprecated Глушить ошибки не стоит. * Раньше у нас они по-умолчанию ошибочно глушились что маскировало многие исключения, в том числе грубые ошибки * Этот метод нужен чтобы временно поддержать старрое поведение пока маскиуремые ошибки не исправятся */ setSuppressErrors(suppress: boolean): void; pipe(op1: IOperator): IObservable; pipe< T1, T2 >(op1: IOperator, op2: IOperator): IObservable; pipe< T1, T2, T3 >(op1: IOperator, op2: IOperator, op3: IOperator): IObservable; pipe< T1, T2, T3, T4 >(op1: IOperator, op2: IOperator, op3: IOperator, op4: IOperator): IObservable; pipe< T1, T2, T3, T4, T5 >(op1: IOperator, op2: IOperator, op3: IOperator, op4: IOperator, op5: IOperator): IObservable; } export interface IValue { getValue(): T; } export interface IEmitter { next(value: T): void; error?(value: Error | unknown): void; } export interface IValueObservable extends IObservable, IValue {} export interface ISubject extends IEmitter, IObservable {} export interface IValueSubject extends IEmitter, IValueObservable {} export type IListener = IEmitter | ((value: T) => void) | ((value: T) => Promise); export type IOperator< TInput, TOutput = TInput > = (input: IObservable) => IObservable; export type TypeOfObservable = TObservable extends IObservable ? TType : never;