zustand
Version:
🐻 Bear necessities for state management in React
29 lines (28 loc) • 2.08 kB
TypeScript
export declare type State = object;
export declare type PartialState<T extends State, K1 extends keyof T = keyof T, K2 extends keyof T = K1, K3 extends keyof T = K2, K4 extends keyof T = K3> = (Pick<T, K1> | Pick<T, K2> | Pick<T, K3> | Pick<T, K4> | T) | ((state: T) => Pick<T, K1> | Pick<T, K2> | Pick<T, K3> | Pick<T, K4> | T);
export declare type StateSelector<T extends State, U> = (state: T) => U;
export declare type EqualityChecker<T> = (state: T, newState: T) => boolean;
export declare type StateListener<T> = (state: T, previousState: T) => void;
export declare type StateSliceListener<T> = (slice: T, previousSlice: T) => void;
export declare type Subscribe<T extends State> = {
(listener: StateListener<T>): () => void;
/**
* @deprecated Please use `subscribeWithSelector` middleware
*/
<StateSlice>(listener: StateSliceListener<StateSlice>, selector?: StateSelector<T, StateSlice>, equalityFn?: EqualityChecker<StateSlice>): () => void;
};
export declare type SetState<T extends State> = {
<K1 extends keyof T, K2 extends keyof T = K1, K3 extends keyof T = K2, K4 extends keyof T = K3>(partial: PartialState<T, K1, K2, K3, K4>, replace?: boolean): void;
};
export declare type GetState<T extends State> = () => T;
export declare type Destroy = () => void;
export declare type StoreApi<T extends State> = {
setState: SetState<T>;
getState: GetState<T>;
subscribe: Subscribe<T>;
destroy: Destroy;
};
export declare type StateCreator<T extends State, CustomSetState = SetState<T>, CustomGetState = GetState<T>, CustomStoreApi extends StoreApi<T> = StoreApi<T>> = (set: CustomSetState, get: CustomGetState, api: CustomStoreApi) => T;
declare function createStore<TState extends State, CustomSetState, CustomGetState, CustomStoreApi extends StoreApi<TState>>(createState: StateCreator<TState, CustomSetState, CustomGetState, CustomStoreApi>): CustomStoreApi;
declare function createStore<TState extends State>(createState: StateCreator<TState, SetState<TState>, GetState<TState>, any>): StoreApi<TState>;
export default createStore;