Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

problema no retorno da promise do service

Aparentemente meu compilador está entendendo que o retorno do método pode ser um array de Negociacao, mas também pode ser void, provavelmente por conta do catch, então estou recebendo esse erro:

Type 'Promise' is not assignable to type 'Promise'. Type 'void | Negociacao[]' is not assignable to type 'Negociacao[]'. Type 'void' is not assignable to type 'Negociacao[]'.

obterNegociacao(handler: HandlerFunction): 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));
    }

Posso mudar a assinatura do método para

obterNegociacoes(handler: HandlerFunction): Promise<void|Negociacao[]> {}

A melhor solucão para não ter que mudar a assinatura do método seria colocar o catch no controller?

2 respostas

Bom dia! Para não mudar a assinatura sim. Mas o que você fez não é feio não.

solução!

Vi agora que depois de colocar um throw no catch dentro do Service, o compilador para de pedir que eu mude o tipo de retorno da Promise.