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

264
Visualizações
Un objeto se crea sin un método de una clase. Error de mecanografiado: no se puede invocar un objeto que posiblemente esté 'indefinido'. ts(2722)

¡Buenas noches! Soy novato en javascript y mecanografiado.

no puedo entender algo Escribí cuidadosamente mi código y apareció la situación. No puedo imaginar, por qué, a través de ella es algo básico. Mirar:

 class A { id: number; constructor(id:number){ this.id=4; } isIdZero?():boolean{ if(this.id===0) return true; else return false; } } let a : A= new A(0); let b : A={ id:9 } alert(b.isIdZero());

Este código genera un error "No se puede invocar un objeto que posiblemente sea 'indefinido'. ts(2722)"

¿Por qué? La función es igual a lo que escribió {}, ¿no es así?

¿Cómo puedo corregirlo?

Mi pregunta es probablemente tan primitiva que no encontré nada.

about 4 years ago · Juan Pablo Isaza
2 Respostas
Responde à pergunta

0

isIdZero?():boolean{

El signo de interrogación aquí significa que está definiendo isIdZero , por lo que puede no estar undefined , en lugar de ser una función. Dado que puede no estar definido, TypeScript no le permitirá llamarlo a menos que lo verifique primero. P.ej:

 if (b.isIdZero) { alert(b.isIdZero()); }

Si desea que isIdZero sea una propiedad obligatoria, elimine el signo de interrogación. Sin embargo, este cambio hará que el siguiente código comience a mostrar un error de tipo, ya que el objeto no tiene todas las propiedades que necesita para ser una A:

 let b: A = { id:9 }

Puede agregar la función al objeto que está creando

 let b: A = { id: 9, isIdZero: () => false, }

O puede dejar de intentar llamar a esto una A, y simplemente dejar que sea un objeto con una identificación que es un número:

 let b = { id: 9, }
about 4 years ago · Juan Pablo Isaza Relatório

0

la ? operador que está utilizando después de isIdZero? le dice a TypeScript que espera la posibilidad de que esta propiedad no esté definida.

No parece que sea necesario, por lo que puede eliminarlo.

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