typedux
Version:
Slightly adjusted Redux (awesome by default) for TS
8 lines (7 loc) • 491 B
TypeScript
import type { ObserverDisposer } from "../store/ObservableStore";
export declare type SelectorSubscriptionListener<R> = (value: R, previousValue?: R) => any;
export declare type SelectorFn<S, R> = ((state: S) => R);
export declare type Selector<S, R> = SelectorFn<S, R> & {
subscribe(listener: SelectorSubscriptionListener<R>): ObserverDisposer;
};
export declare type InferredSelector<Sel extends (state: any) => any> = Sel extends (state: infer S) => infer R ? Selector<S, R> : never;