Soy nuevo en mecanografiar. Ahora estoy tratando de mapear una matriz y devolver el resultado. pero el resultado actualizado regresa con un operador or
aquí cuando paso el cursor sobre la matriz actualizada
let updatedArray: (false | { age: number; id: number; name: string; username: string; email: string; })[]Según tengo entendido, debería ser solo una matriz de objetos.
Aquí está la función
const increseAge = (userId: number): void => { //hover over updatedArray here let updatedArray = egArray.map((user) => user.id === userId && { ...user, age : user.age + 1 }); setEgArray(updatedArray) };El operador && funciona evaluando primero la expresión de la izquierda. Si es falso, devuelve ese valor. Si es veraz, evalúe la expresión de la derecha y devuélvala.
user.id === userId && { ...user, age : user.age + 1 } En este caso, la expresión de la izquierda devuelve un boolean . Entonces, el expreso de la izquierda evalúa false y se devuelve false , o evalúa true y devuelve su objeto de usuario con el cambio de edad.
Tan false | MyUserType es el tipo que realmente devuelve la función que pasó al map . El resultado sería una matriz de todos los valores false , excepto el que coincidiera con la identificación del usuario, y ese sería el objeto del usuario con el cambio de edad.
Probablemente quieras un ternario en su lugar:
egArray.map((user) => ( user.id === userId ? { ...user, age : user.age + 1 } // found the user to make older! : user // some other user. ));De esta forma, cada iteración del bucle devuelve un objeto de usuario válido.