koshin
Version:
Fine-grained reactive store for React using useSyncExternalStore
9 lines (8 loc) • 416 B
TypeScript
type ChangeCallback<T> = <K extends keyof T>(key: K, newValue: T[K], oldValue: T[K]) => void;
type StoreWithProps<T extends object> = T & {
set<K extends keyof T>(key: K, value: T[K]): void;
onChange(callback: ChangeCallback<T>): () => void;
signal<K extends keyof T>(key: K): [T[K], (value: T[K]) => void];
};
export declare function createStore<T extends object>(obj: T): StoreWithProps<T>;
export {};