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

231
Visualizações
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 Respostas
Responde à pergunta

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