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

Da erro no foreach - Property 'forEach' does not exist on type 'void + Classe NegociacaoController.ts function @throttle() importaDados()

  this._service.obterNegociacoes(isOk)
            .then(negociacoes => 
                {negociacoes.forEach(negociacao => this._negociacoes.adiciona(negociacao));

                    this._negociacoesView.update(this._negociacoes);

                });
4 respostas

Fala ai Marcelo, tudo bem? Verifica o retorno da função obterNegociacoes do seu this._service.

Garante que seja uma Promise e no resolve esteja sendo retornado um array.

Talvez tenha faltado algum return na função.

Espero ter ajudado.

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

export class NegociacaoService {

    obterNegociacoes(handler: Function): 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));


    }
}

Retorna isso.

solução!
import { NegociacaoParcial, Negociacao } from '../models/index';

export class NegociacaoService {

    obterNegociacoes(handler: Function): 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);
            return []});


    }
}

Voltei a retornar Promise<Negociacao[]> e coloquei um return no catch ae funcionou perfeito.

Boa Marcelo, fico feliz que tenha resolvido seu problema.

Sempre que precisar não deixe de criar suas dúvidas.

Abraços e bons estudos.