3
respostas

Erro no 'negociacao' dentro do NegociacaoController.ts

Não sei o que ocorreu mas os códigos que eu peguei durante as aulas está dando erro no trecho abaixo, especialmente no negociacao:

            negociacoesParaImportar
                .filter(negociacao => 
                    !negociacoesJaImportadas.some(jaImportada => 
                        negociacao.ehIgual(jaImportada)))
                .forEach(negociacao => 
                this._negociacoes.adiciona(negociacao));

Ao passar o mouse por cima do negociacao o Visual Studio Code me apresenta a seguinte mensagem:

(parameter) negociacao: any
parameter 'negociacao' implicitly has an 'any' type. ts(7006)

Eu prestei bastante a atenção no código apresentado no curso, pausando o vídeo e não notei nada de errado.

Abaixo está o código completo do arquivo do projeto NegociacaoController.ts, para verificação:

import { NegociacoesView, MensagemView } from '../views/index';
import { Negociacao, Negociacoes } from '../models/index';
import { domInject, throttle } from '../helpers/decorators/index';
import { NegociacaoParcial } from '../models/index';
import { NegociacaoService } from '../services/index';
import { imprime } from '../helpers/index';

export class NegociacaoController {

    @domInject('#data')
    private _inputData: JQuery;

    @domInject('#quantidade')
    private _inputQuantidade: JQuery;

    @domInject('#valor')
    private _inputValor: JQuery;

    private _negociacoes = new Negociacoes();
    private _negociacoesView = new NegociacoesView('#negociacoesView');
    private _mensagemView = new MensagemView('#mensagemView');
    private _service = new NegociacaoService();

    constructor() {
        this._negociacoesView.update(this._negociacoes);
    }

    adiciona(event: Event) {

        event.preventDefault();

        let data = new Date(this._inputData.val().replace(/-/g, ','));

        if(!this._ehDiaUtil(data)) {

            this._mensagemView.update('Somente negociações em dias úteis, por favor!');
            return 
        }

        const negociacao = new Negociacao(
            data, 
            parseInt(this._inputQuantidade.val()),
            parseFloat(this._inputValor.val())
        );

        negociacao.paraTexto();

        this._negociacoes.adiciona(negociacao);
        this._negociacoesView.update(this._negociacoes);
        this._mensagemView.update('Negociação adicionada com sucesso!');

        // imprime no console a negociacao
        //imprime(negociacao, this._negociacoes);
        imprime(negociacao, this._negociacoes, { paraTexto: () => console.log('oi')});
    }

    private _ehDiaUtil(data: Date) {

        return data.getDay() != DiaDaSemana.Sabado && data.getDay() != DiaDaSemana.Domingo;
    }

    @throttle()
    async importaDados() {

        try {

           // usou await antes da chamada de this.service.obterNegociacoes()

            const negociacoesParaImportar = await this._service
                .obterNegociacoes(res => {

                    if(res.ok) {
                        return res;
                    } else {
                        throw new Error(res.statusText);
                    }
                });

            const negociacoesJaImportadas = this._negociacoes.paraArray();

            negociacoesParaImportar
                .filter(negociacao => 
                    !negociacoesJaImportadas.some(jaImportada => 
                        negociacao.ehIgual(jaImportada)))
                .forEach(negociacao => 
                this._negociacoes.adiciona(negociacao));

            this._negociacoesView.update(this._negociacoes);

        } catch(err) {
            this._mensagemView.update(err.message);
        }
    }
}


enum DiaDaSemana {

    Domingo, 
    Segunda, 
    Terca, 
    Quarta, 
    Quinta, 
    Sexta, 
    Sabado
}

Agradeço se puderem me ajudar a descobrir o que houve de errado e não está deixando compilar o código do projeto.

3 respostas

Oi, Marcélio, tudo bem?

Eu testei o código que você compartilhou com o projeto final do curso e não tive essa mensagem. Você utilizou qual projeto de curso? Se preferir, pode compartilhar aqui o seu projeto pelo googledrive ou github para que possa testar e entender melhor o que aconteceu.

Eu usei o arquivo disponibilizado no início da aula 5 do curso 2 de typescript (o arquivo é o 10-alurabank.zip.

Oi, Marcélio!

Como você fez alterações no código que foi disponibilizado, acredito que testar o seu projeto seja mais efetivo. Se puder disponibilizar ele no googledrive ou no github, posso entender melhor esse comportamento.