This repository has been archived on 2022-03-12. You can view files and clone it, but cannot push or open issues or pull requests.

11 lines
531 B
TypeScript
Raw Normal View History

2021-04-02 02:24:13 +03:00
export default class StateManager<StateType, AppliedActionResultType, ActionName extends string = never> {
state: StateType;
constructor(state: StateType);
appliedActions: {
[K in ActionName]: AppliedActionResultType;
};
applyAction: <NewActionName extends string>(action: (content: StateType, actions: {
[K in ActionName]: AppliedActionResultType;
}) => [StateType, NewActionName, AppliedActionResultType]) => StateManager<StateType, AppliedActionResultType, ActionName | NewActionName>;
}