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

317
Visualizações
La propiedad 'error' no existe en el tipo '"" | Promesa<cualquiera>'

Estoy tratando de agregar un manejo de errores a un servicio, siguiendo la guía Angular.

Fragmento relevante:

 private handleError (error: Response | any) { // In a real world app, you might use a remote logging infrastructure let errMsg: string; if (error instanceof Response) { const body = error.json() || ''; const err = body.error || JSON.stringify(body); errMsg = `${error.status} - ${error.statusText || ''} ${err}`; } else { errMsg = error.message ? error.message : error.toString(); } console.error(errMsg); return Observable.throw(errMsg); }

Sin embargo, recibo un error de TypeScript:

error TS2339: Property 'error' does not exist on type '"" | Promise<any>'. Property 'error' does not exist on type '""'.

Puedo entender por qué sucede error.json() devuelve Promise<any> y luego la línea siguiente con body.error no funcionaría porque no hay una propiedad error . Sin embargo, parece que debería esperar que se devuelva un objeto JSON desde .json() . ¿Por qué es eso y qué me estoy perdiendo que la guía Angular no es?

over 4 years ago · Santiago Trujillo
3 Respostas
Responde à pergunta

0

Me acaba de pasar lo mismo. Esto sucede cuando no puede importar el objeto de respuesta.

 import { Response } from '@angular/http';
over 4 years ago · Santiago Trujillo Relatório

0

No, no funcionará porque escribiste:

 const body = error.json() || '';

Lo que significa que el body puede ser una cadena vacía y una cadena no tiene la propiedad de error .

Esto debería ser mejor:

 const body = error.json() || { error: null };

Editar

Oh, error.json() devuelve una Promise , lo que significa que no podrá usar este bloque síncrono, sino que deberá:

 error.json().then(body => { if (!body) { body = ""; } const err = body.error || JSON.stringify(body); const errMsg = `${error.status} - ${error.statusText || ''} ${err}`; });
over 4 years ago · Santiago Trujillo Relatório

0

Tuve el mismo problema, finalmente encontré esta solución.

 .catch(error => { let errMsg: string; const body = JSON.parse(error._body); if (body) { errMsg = body.error } else { errMsg = error.message ? error.message : error.toString(); } console.error(errMsg); return Promise.reject(errMsg); });

over 4 years ago · Santiago Trujillo 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