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

232
Vistas
TypeError: no se puede convertir indefinido o nulo en objeto al eliminar la clave del objeto

Quiero eliminar la clave de un objeto del objeto si su valor es nulo y el tipo de clave es opcional.

por ejemplo, tengo una interfaz del objeto como esta:

 Interface IObject { amount: number; plan: IPlan; achieve: IAchieve; status?: string; rank?: number; } Interface IPlan { year: string | null; name: string; date?: Date; grade?: number; } Interface IAchieve { pic: string; name?: string; date?: Date; grade?: number; }

y tiene valor:

 let data: IObject = { amount: 2300; plan: { year: null; name: 'renov'; date: null; grade: 3; }; achieve: { pic: 'John'; name: null; date: null; grade: 3; }; status: 'good'; rank: null; };

lo que hice:

 Object.keys(data).forEach(obj => { if (typeof data[obj as keyof typeof IObject] === 'object') { Object.keys(data[obj as keyof typeof any]).forEach(obj2 => { if (data[obj as keyof typeof any][obj2] == undefined) { delete data[obj as keyof typeof any][obj2]; } }); } else if (data[obj as keyof typeof any] == undefined) delete data[obj as keyof typeof any]; });

pero obtengo:

"Error de tipo: no se puede convertir indefinido o nulo en objeto"

Estoy esperando resultado:

 data = { amount: 2300; plan: { year: null; name: 'renov'; grade: 3; }; achieve: { pic: 'John'; grade: 3; }; status: 'good'; };
about 4 years ago · Juan Pablo Isaza
1 Respuestas
Responde la pregunta

0

Hay algunos problemas con esta pregunta.

problemas de sintaxis

  • interface no Interface .
    Ver Tipos Cotidianos: Interfaces
  • Al crear objetos , use un separador entre campos en lugar de ; .
    Consulte Inicializador de objetos .
  • ¿Un campo con tipo date?: Date debe aceptar Date e undefined . Si desea incluir null , ¿debe escribirlo como date?: Date | null
    Consulte Tipos cotidianos: null e undefined .
  • La variante mecanografiada de typeof solo se puede usar para recuperar el tipo de una variable o propiedad. typeof IObject intentaría obtener el tipo de una interfaz, lo que no funcionará.
    • No entiendo qué intentas hacer con líneas como esta: obj as keyof typeof any .

Problema de funcionalidad

Quiero eliminar la clave de un objeto del objeto si su valor es nulo y el tipo de clave es opcional.

Si entiendo esta línea correctamente, entonces está intentando usar la definición de la interfaz para hacer algo en tiempo de ejecución.
Esto no funcionará, después de que el mecanografiado se haya compilado en javascript, las interfaces ya no estarán presentes en su código.
Consulte Conceptos básicos: tipos borrados .

Deberá abordar este problema desde un ángulo diferente.

¿Quizás podría eliminar todos los campos con un valor null de su objeto sin importar qué? Si su escritura es correcta, entonces esto solo debería tocar los campos que realmente aceptan valores NULL.

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