jotai
Version:
👻 Next gen state management that will spook you
28 lines (27 loc) • 1.19 kB
TypeScript
import type { Atom, Getter, WritableAtom } from 'jotai';
declare global {
interface SymbolConstructor {
readonly observable: symbol;
}
}
declare type Subscription = {
unsubscribe: () => void;
};
declare type Observer<T> = {
next: (value: T) => void;
error: (error: unknown) => void;
complete: () => void;
};
declare type ObservableLike<T> = {
subscribe(observer: Observer<T>): Subscription;
subscribe(next: (value: T) => void, error?: (error: unknown) => void, complete?: () => void): Subscription;
[Symbol.observable]?: () => ObservableLike<T> | undefined;
};
declare type SubjectLike<T> = ObservableLike<T> & Observer<T>;
declare type InitialValueFunction<T> = () => T | undefined;
declare type AtomWithObservableOptions<TData> = {
initialValue?: TData | InitialValueFunction<TData>;
};
export declare function atomWithObservable<TData>(createObservable: (get: Getter) => SubjectLike<TData>, options?: AtomWithObservableOptions<TData>): WritableAtom<TData, TData>;
export declare function atomWithObservable<TData>(createObservable: (get: Getter) => ObservableLike<TData>, options?: AtomWithObservableOptions<TData>): Atom<TData>;
export {};