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

119
Visualizações
La verificación de tipos no está ocurriendo para el objeto anidado

Estoy trabajando en una aplicación Angular. En eso tengo una interfaz IAbc :

 interface IAbc { id: number, name: string }

Y otra interfaz IXyz que usa la interfaz anterior como se muestra a continuación:

 interface IXyz { id: number, value: string | number | Date | IAbc[]; }

Aquí, el valor puede ser de cualquier tipo de datos, por lo que he reducido los tipos.

He creado una nueva variable:

 let someVar: IXyz; someVar = { id: 100, value: [ { id: 1, name: 'abc' }, { id: 2, name: 'xyz' } ] };

Dado que el valor también puede ser una lista, tengo que usar forEach para realizar alguna operación:

 someVar.value.forEach((x: IAbc) => console.log('some operation on value, ', x))

Pero me sale este error en forEach :

 Property 'forEach' does not exist on type 'string | number | Date | IAbc[]'. Property 'forEach' does not exist on type 'string'.(2339)

Creo que lógicamente esto debería funcionar. ¿Hay algo mal con el texto mecanografiado?

He creado un enlace de juegos, donde he reproducido esto.

Déjame saber lo que piensas. ¡Gracias!


PD: sé que puedo usar any allí y funcionará sin problemas, pero el uso de any ha sido deshabilitado por la pelusa de la aplicación.

about 4 years ago · Santiago Trujillo
2 Respostas
Responde à pergunta

0

Para deshacerse del error, puede usar un typeguard.

 function isArray(value: string | number | Date | IAbc[]): value is IAbc[] { return (value as IAbc[]).forEach !== undefined; } if( isArray(someVar.value) ) { someVar.value.forEach((x: IAbc) => console.log('some operation on value, ', x)) }

Puede verlo funcionando en una versión actualizada de su área de juegos aquí

about 4 years ago · Santiago Trujillo Relatório

0

Necesita un tipo de conversión para decirle al compilador que esto es de hecho una matriz

 (someVar.value as IAbc[]).forEach((x: IAbc) => console.log('some operation on value, ', x))
about 4 years ago · Santiago Trujillo 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