Estou tomando esse erro na linha .forEach(negociacao => this._listaNegociacoes.adiciona(negociacao));
Voltei a instrução para Promise normal ... e roda.
Você está vendo a versão anterior da nova experiência da Alura que estamos preparando para você. Em breve, ela ganha uma identidade visual novinha totalmente pensada em potencializar seus estudos!
Estou tomando esse erro na linha .forEach(negociacao => this._listaNegociacoes.adiciona(negociacao));
Voltei a instrução para Promise normal ... e roda.
Oi, Alexandre, tudo bem?
Você verificou como está declarada a propriedade data? O erro nos indica que ela não está definida, assim, não tem como ser lida. Faz uma varredura no código e onde a propriedade data comparando com o do instrutor. Pode colocar aqui também o seu código para que possamos te ajudar melhor :}
`
class Negociacao {
constructor(data, quantidade, valor) {
this._data = new Date(data.getTime());
this._quantidade = quantidade;
this._valor = valor;
Object.freeze(this);
}
get volume() {
return this._quantidade * this._valor;
}
get data() {
return new Date(this._data.getTime());
}
get quantidade() {
return this._quantidade;
}
get valor() {
return this._valor;
}}
class ListaNegociacoes {
constructor() {
this._negociacoes = [];
}
adiciona(negociacao) {
this._negociacoes.push(negociacao);
}
get negociacoes() {
return [].concat(this._negociacoes);
}
esvazia() {
this._negociacoes = [];
}
get volumeTotal() {
return this._negociacoes.reduce((total, n) => total + n.volume, 0.0);
}}
class NegociacaoController {
constructor() {
let $ = document.querySelector.bind(document);
this._inputData = $('#data');
this._inputQuantidade = $('#quantidade');
this._inputValor = $('#valor');
this._listaNegociacoes = new Bind(
new ListaNegociacoes(),
new NegociacoesView($('#negociacoesView')),
'adiciona', 'esvazia');
this._mensagem = new Bind(
new Mensagem(), new MensagemView($('#mensagemView')),
'texto');
}
adiciona(event) {
event.preventDefault();
this._listaNegociacoes.adiciona(this._criaNegociacao());
this._mensagem.texto = 'Negociação adicionada com sucesso';
this._limpaFormulario();
}apaga() {
this._listaNegociacoes.esvazia();
this._mensagem.texto = 'Negociações apagadas com sucesso';
}
_criaNegociacao() {
return new Negociacao(
DateHelper.textoParaData(this._inputData.value),
this._inputQuantidade.value,
this._inputValor.value);
}
_limpaFormulario() {
this._inputData.value = '';
this._inputQuantidade.value = 1;
this._inputValor.value = 0.0;
this._inputData.focus();
}
importaNegociacoes() {
let service = new NegociacaoService();
Promise.all([,
service.obterNegociacoesDaSemana(),
service.obterNegociacoesDaSemanaAnterior(),
service.obterNegociacoesDaSemanaRetrasada()]
).then(negociacoes => {
//console.log(negociacoes);
negociacoes
.reduce((arrayachatado, array) => arrayachatado.concat(array), [])
.forEach(negociacao => this._listaNegociacoes.adiciona(negociacao));
this._mensagem.texto = 'Negociações importadas com sucesso';
})
.catch (error => console.log(error));
//.catch(error => this._mensagem.texto = error);
}