Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

402
Vistas
TypeScript: la propiedad 'nombre' no existe en el tipo 'cualquier []'

Por alguna razón, no puedo ejecutar mi aplicación React, debido al siguiente error:

TypeScript: la propiedad 'nombre' no existe en el tipo 'cualquiera []'.

Estoy exportando mi tipo de TS en función de mis datos de API:

 export type CartItemType = { id: number; name: string; image: string; amount: number; chair: { name: string; colors: { white: { hex: string; }; }; }; };

Obteniendo los datos:

 const getProducts = async (): Promise<CartItemType[]> => await (await fetch("apiEndpoint")).json(); const [cartItems, setCartItems] = useState([] as CartItemType[]); const { data, isLoading, error } = useQuery<CartItemType[]>( "products", getProducts );

Me gustaría seleccionar los datos obtenidos y lo estoy haciendo de esta manera:

 const [selectedData, setSelectedData] = React.useState([]); {data?.map((item) => ( <button onClick={() => setSelectedData(item)}>SHOW</button> {selectedData === item ? ( <p>{selectedData.chair.description}</p> ) : null}

Desafortunadamente, tengo este error en los datos seleccionados:

Esta condición siempre devolverá 'falso' ya que los tipos 'any[]' y 'CartItemType' no se superponen.

Realmente no sé qué significa eso y cómo solucionarlo. ingrese la descripción de la imagen aquí

Funcionaría solo cuando especificaría el número en una matriz de objetos como esta:

 selectedData[0].name

Pero tengo que hacer que funcione para selectedData.name

about 4 years ago · Juan Pablo Isaza
2 Respuestas
Responde la pregunta

0

Debe ser consciente del valor que el estado va a tener. Es importante porque la actualización de estado hace que se vuelva a renderizar la aplicación.

Cambie su valor inicial de la variable de estado de datos selectedData a {} .

 const [selectedData, setSelectedData] = React.useState({} as CartItemType);

Motivo: Inicialmente, está manteniendo el valor de la matriz en un estado y luego está configurando el estado con objetos y realizó la operación asumiendo que es un objeto. Por lo tanto, es obvio que debe mantener el valor del objeto en el estado de selectedData .

Esta es la razón por la que recibe este mensaje de error.

 This condition will always return 'false' since the types 'any[]' and 'CartItemType' have no overlap.

Lo bueno: he hecho ese cambio en el sandbox y el error desaparece.

about 4 years ago · Juan Pablo Isaza Denunciar

0

La respuesta aceptada solucionará el error, pero lo ideal es evitar la conversión de tipos.

En mi opinión, es más seguro establecer selectedData en null primero para asegurarse de que solo lo use si tiene un valor correcto:

 const [selectedData, setSelectedData] = React.useState<CartItemType | null>(null);

Entonces en tu código puedes hacer

 if(selectedData) { ... }

o

 selectedData ? ... :
about 4 years ago · Juan Pablo Isaza Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda