Tengo un problema al tratar de averiguar cómo asignar una matriz de usuarios después de una recuperación asíncrona. Tengo una interfaz de usuario simple, que tiene una identificación y un nombre:
export interface User { id: number }Luego tengo un UserState que incluye una matriz de usuarios:
export interface UserState { loading: boolean users: User[] status: userStatus error: string | null | undefined }En mi segmento, tengo una función asíncrona:
export const getUsers = createAsyncThunk( 'user/fetchUsers', async (users: []) => { const response = await fetchUsers(); return response.data; } );No tengo reductores pero si extraReducers:
const userSlice = createSlice({ name: 'user', initialState, reducers: {}, extraReducers: builder => { builder.addCase(getUsers.fulfilled, (state, {payload: users}) => { state.loading = false state.status = 'idle' state.users = users //??? Or something like this...??? state.error = '' }) } })Para mayor claridad, acabo de incluir este addCase en el que intento asignar la matriz esperada de usuarios en formato JSON a la matriz de usuarios. Probé varias variaciones de sintaxis diferentes y obtengo errores como:
El tipo 'Usuario[]' no se puede asignar al tipo '(() => Elemento)[]'. El tipo 'Usuario' no se puede asignar al tipo '() => Elemento'. El tipo 'Usuario' no proporciona ninguna coincidencia para la firma '(): Elemento'.ts(2322)
No estoy completamente seguro de cómo abordar esto. He visto una serie de tutoriales y ejemplos, pero hay muchas formas diferentes de hacer las cosas. No estoy seguro de si estoy cerca de una solución, hay una solución simple y directa desde donde estoy, o si estoy a un mundo de distancia de solucionar esto. Siento como si hubiera pasado por demasiadas madrigueras de conejo y terminé creando un monstruo de partes mixtas que no encajan del todo.
¡Gracias por cualquier ayuda!
Según el mensaje de error, parece que está intentando asignar un tipo de componente a la interfaz User aquí; parece que en algún momento ha estado importando un componente de User en lugar de su interfaz de User . Revisar sus importaciones y encontrar la importación incorrecta solucionará su problema.