solid-js
Version:
A declarative JavaScript library for building user interfaces.
43 lines (42 loc) • 1.21 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>;
export declare function from<T>(
producer:
| ((setter: Setter<T | undefined>) => () => void)
| {
subscribe: (fn: (v: T) => void) =>
| (() => void)
| {
unsubscribe: () => void;
};
}
): Accessor<T | undefined>;
export {};