Press n or j to go to the next uncovered block, b, p or k for the previous block.
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 | 12x 12x 87x 87x 87x 87x | export default class StateManager<
StateType,
AppliedActionResultType,
ActionName extends string = never
> {
constructor(public state: StateType) {}
// @ts-ignore
appliedActions: { [K in ActionName]: AppliedActionResultType } = {};
// @ts-ignore
applyAction: <NewActionName extends string>(
action: (
content: StateType,
actions: { [K in ActionName]: AppliedActionResultType }
) => [StateType, NewActionName, AppliedActionResultType]
) => StateManager<StateType, AppliedActionResultType, ActionName | NewActionName> = action => {
const [state, actionName, appliedAction] = action(this.state, this.appliedActions);
this.state = state;
// @ts-ignore
this.appliedActions[actionName] = appliedAction;
return this;
};
}
|