Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

393
Visualizações
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 Respostas
Responde à pergunta

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 Relatório

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 Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda