import { createSlice , PayloadAction } from '@reduxjs/toolkit' ; import { AppThunk , RootState } from '../../app/store' ; interface CounterState { value : number ; } const initialState = { value : 0 , } ; export const counterSlice = createSlice ( { name : 'counter' , initialState , reducers : { increment : state => { state . value += 1 ; } , decrement : state => { state . value -= 1 ; } , incrementByAmount : ( state , action ) => { state . value += action . payload ; } , } , } ) ; export const { increment , decrement , incrementByAmount } = counterSlice . actions ; export const incrementAsync = ( amount ) : AppThunk => dispatch => { setTimeout ( ( ) => { dispatch ( incrementByAmount ( amount ) ) ; } , 1000 ) ; } ; export const selectCount = ( state ) => state . counter . value ; export default counterSlice . reducer ;