nedux
Version:
the next redux state management
18 lines (17 loc) • 957 B
TypeScript
import { NextObserver, Subscription } from 'rxjs';
declare type DefaultState = {
[key: string]: any;
};
declare type SubscriptionOptions = {
withInitialValue?: boolean;
};
export interface Store<T extends DefaultState = DefaultState, K extends keyof T = keyof T> {
get: <Key extends K, Value extends T[K] = T[Key]>(key: Key) => Value;
set: <Key extends K, Value extends T[K] = T[Key]>(key: Key, value: Value | ((prevValue: Value) => Value)) => void;
subscribe: <Key extends K, Value extends T[K] = T[Key]>(key: Key | '', observer: NextObserver<Value> | ((value: Value, key: Key) => any), options?: SubscriptionOptions) => Subscription | Subscription[];
}
export interface Middleware<T, K extends keyof T> {
(store: Store<T, K>): void;
}
export declare const createStore: <T extends DefaultState, K extends keyof T = keyof T, U extends K = K>(initState: T, middleware?: Middleware<T, U>[]) => Store<T, K>;
export {};