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

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

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 Report

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 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!