Tive que ajustar o retorno da obterNegociacoes da classe NegociacaoService que ficou da seguinte forma:
obterNegociacoes(handler: HandlerFunction): Promise<void | 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));
}
Este ajuste foi necessário para resolver 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[]'.
Entretanto, agora no método importaDados da classe NegociacaoController ocorre o seguinte problema Property 'forEach' does not exist on type 'void | Negociacao[]'. Property 'forEach' does not exist on type 'void'.
this._service
.obterNegociacoes(res => {
if (res.ok) return res;
throw new Error(res.statusText);
})
.then(negociacoes => {
negociacoes.forEach(negociacao =>
this._negociacoes.adiciona(negociacao));
this._negociacoesView.update(this._negociacoes);
});
Como proceder?