Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

391
Views
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 answers
Answer question

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 Report

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 Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!