-
Notifications
You must be signed in to change notification settings - Fork 0
/
counter.ts
37 lines (32 loc) · 966 Bytes
/
counter.ts
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
import { ActionCreator } from '@store';
import { AppAction } from '.';
export type CounterAction =
| SetCounterAction
| IncreaseCounterAction
| DecreaseCounterAction;
export interface SetCounterAction extends AppAction {
type: 'SET_COUNT';
payload: number;
}
export interface IncreaseCounterAction extends AppAction {
type: 'INCREASE_COUNT';
}
export interface DecreaseCounterAction extends AppAction {
type: 'DECREASE_COUNT';
payload: Promise<void>;
}
export const setCount: ActionCreator<SetCounterAction> = (n: number) => ({
type: 'SET_COUNT',
payload: n,
});
export const increaseCount: ActionCreator<IncreaseCounterAction> = () => ({
type: 'INCREASE_COUNT',
});
// decrease has a delay to test that promises work correctly
export const decreaseCount: ActionCreator<DecreaseCounterAction> = () => ({
type: 'DECREASE_COUNT',
payload: new Promise<void>((resolve) => {
const DELAY = 500;
setTimeout(resolve, DELAY);
}),
});