cascade
Version:
A modern library for creating user interfaces.
33 lines (29 loc) • 905 B
text/typescript
export interface ISubscriber {
notify(): Promise<void>;
dispose(recursive?: boolean): void;
}
export interface ISubscriberFunction<T> {
(n: T, o?: T): void;
}
export interface IObservable<T> {
id: number;
subscribers: (ISubscriber | ISubscriberFunction<T>)[];
value: T;
alwaysNotify: boolean;
getValue(): T;
peek(): T;
peekDirty(): T;
track(): Promise<void>;
setValue(value: T): Promise<void>;
subscribeOnly(subscriber: ISubscriber | ISubscriberFunction<T>): void;
subscribe(subscriber: ISubscriber | ISubscriberFunction<T>): void;
unsubscribe(subscriber: ISubscriber | ISubscriberFunction<T>): void;
publish(value: T, oldValue?: T): Promise<void>;
dispose(recursive?: boolean): void;
}
export interface IArray<T> extends Array<T> {
set?: (index: number, value: T) => void;
}
export interface IHash<T> {
[index: string]: T;
}