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?