1
resposta

Problema no arquivo / classe "NegociacaoService.ts"

Boa noite,

Ao abrir o arquivo "NegociacaoService.ts" no "VS Code", uma mensagem como se fosse um erro aparece, ao fechar some, não impede a compilação, nem mesmo o funcionamento da página. Já realizei alguns testes para ver se a compilação ocorre, por exemplo colocando "alerts" no "adicionar" e "importar", e as modificações se aplicam, funcionam! Da forma que o VSCode e o compilador estão tratando essa questão parece muito mais um "Warning", pois não impede nada!

Alguém saberia me dizer o que está acontecendo?

O "erro" é:

Type 'Promise<void | Negociacao[]>' is not assignable to type 'Promise<Negociacao[]>'.
  Type 'void | Negociacao[]' is not assignable to type 'Negociacao[]'.
    Type 'void' is not assignable to type 'Negociacao[]'.ts(2322)

app/ts/services/NegociacaoService.ts

// app/ts/services/NegociacaoService.ts

import { NegociacaoParcial, Negociacao } from '../models/index';

export class NegociacaoService {

    obterNegociacoes(handler: ResponseHandler): Promise<Negociacao[]> {

        return fetch('http://localhost:8080/dados')
            .then(res => handler(res))
            .then(res => res.json())
            .then((dados: NegociacaoParcial[]) => 
                dados.map(dado => new Negociacao(new Date(), dado.vezes, dado.montante))
            )
            .catch(err => console.log(err));

    }
}

export interface ResponseHandler {

    (res: Response): Response
}
1 resposta

Fala ai Juliano, tudo bem? Acredito se por conta do catch dessa forma, pode ser que a sua função não retorne um array de Negociacao e sim um erro que ocorreu.

Por isso o TypeScript pede para você setar Promise<void | Negociacao[]>, dessa forma, vai abranger os dois possíveis tipos de retorno.

Espero ter ajudado.