import { createSlice , PayloadAction } from "@reduxjs/toolkit" ; export type listType = { count : number ; todos : { id : string ; content : string ; completed : boolean ; } [ ] ; } | null ; export type StateType = { todos : null | listType ; } ; const initialState = { todos : null } ; const todoListSlice = createSlice ( { name : "ToDos" , initialState , reducers : { setTodo : ( state , { payload } ) => { state . todos = payload ; } , addTodo : ( state , { payload } ) => { if ( state . todos ) { state . todos . count += 1 ; const arr = [ ... state . todos . todos ] ; arr . push ( payload ) ; state . todos = { ... state . todos , todos : arr } ; } } , deleteTodo : ( state , { payload } ) => { if ( state . todos ) { const arr = state . todos . todos . filter ( item => item . id !== payload ) ; state . todos = { ... state . todos , todos : arr } ; state . todos . count -- ; } } , updateTodo : ( state , { payload } ) => { if ( state . todos ) { const arr = [ ... state . todos . todos ] ; arr . map ( item => item . id === payload ? item . completed = true : null ) ; state . todos = { ... state . todos , todos : arr } ; } } , } , } ) ; export default todoListSlice . reducer ; export const { setTodo , addTodo , deleteTodo , updateTodo } = todoListSlice . actions ;