Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

265
Vistas
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 Respuestas
Responde la pregunta

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 Denunciar

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 Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda