rx-subject
Version: 
minimal Subject implementation (0.4k bytes), independent of reactive framework
18 lines (17 loc) • 507 B
TypeScript
export interface Subject<T> {
    sink: Observer<T>;
    source$: Subscribable<T>;
}
export interface Observer<T> {
    next(val: T): void;
    error?(error?: any): void;
    complete?(): void;
}
export interface Subscribable<T> {
    subscribe(observer: Observer<T>): Subscription;
    subscribe(next: (val: T) => void, error?: (error?: any) => void, complete?: () => void): Subscription;
}
export interface Subscription {
    unsubscribe(): void;
}
export default function createSubject<T>(): Subject<T>;