solid-js
Version:
A declarative JavaScript library for building user interfaces.
37 lines (36 loc) • 1.27 kB
TypeScript
import { Accessor, Setter } from "./signal.js";
declare global {
interface SymbolConstructor {
readonly observable: symbol;
}
}
interface Observable<T> {
subscribe(observer: ObservableObserver<T>): {
unsubscribe(): void;
};
[Symbol.observable](): Observable<T>;
}
export type ObservableObserver<T> = ((v: T) => void) | {
next?: (v: T) => void;
error?: (v: any) => void;
complete?: (v: boolean) => void;
};
/**
* Creates a simple observable from a signal's accessor to be used with the `from` operator of observable libraries like e.g. rxjs
* ```typescript
* import { from } from "rxjs";
* const [s, set] = createSignal(0);
* const obsv$ = from(observable(s));
* obsv$.subscribe((v) => console.log(v));
* ```
* description https://docs.solidjs.com/reference/reactive-utilities/observable
*/
export declare function observable<T>(input: Accessor<T>): Observable<T>;
type Producer<T> = ((setter: Setter<T>) => () => void) | {
subscribe: (fn: (v: T) => void) => (() => void) | {
unsubscribe: () => void;
};
};
export declare function from<T>(producer: Producer<T>, initalValue: T): Accessor<T>;
export declare function from<T>(producer: Producer<T | undefined>): Accessor<T | undefined>;
export {};