Eu assisti 3 vezes a aula, fiz tudo olhando milimétricamente mas mesmo assim não apareceu o console.log do inspect na tela. Segue meu código:
Inspect: (caminho app/src/decorators/inspect.ts )
export function inspect() {
return function(
target: any,
propertyKey: string,
descriptor: PropertyDescriptor
) {
const metodoOriginal = descriptor.value;
descriptor.value = function (...args: any[]) {
console.log(`--- Método: ${propertyKey}`);
console.log(`------ parâmetros: ${JSON.stringify(args)}`);
const retorno = metodoOriginal.apply(this, args);
console.log(`------ retorno: ${JSON.stringify(retorno)}`);
return retorno;
}
return descriptor;
}
}
NegociacaoController: (caminho: app/src/controllers/negociacao-controller.ts)
import { inspect } from '../decorators/inspect.js';
import { logarTempoDeExecucao } from '../decorators/logar-tempo-de-execucao.js';
import { DiasDaSemana } from '../enums/dias-da-semana.js';
import { Negociacao } from '../models/negociacao.js';
import { Negociacoes } from '../models/negociacoes.js';
import { MensagemView } from '../views/mensagem-view.js';
import { NegociacoesView } from '../views/negociacoes-view.js';
export class NegociacaoController {
private inputData: HTMLInputElement;
private inputQuantidade: HTMLInputElement;
private inputValor: HTMLInputElement;
private negociacoes = new Negociacoes();
private negociacoesView = new NegociacoesView('#negociacoesView', true);
private mensagemView = new MensagemView('#mensagemView');
constructor() {
this.inputData = <HTMLInputElement>document.querySelector('#data');
this.inputQuantidade = document.querySelector('#quantidade') as HTMLInputElement;
this.inputValor = document.querySelector('#valor') as HTMLInputElement;
this.negociacoesView.update(this.negociacoes);
}
@inspect()
@logarTempoDeExecucao()
public adiciona(): void {
const negociacao = Negociacao.criaDe(
this.inputData.value,
this.inputQuantidade.value,
this.inputValor.value
);
if (!this.ehDiaUtil(negociacao.data)) {
this.mensagemView
.update('Apenas negociações em dias úteis são aceitas');
return ;
}
this.negociacoes.adiciona(negociacao);
this.limparFormulario();
this.atualizaView();
}
private ehDiaUtil(data: Date) {
return data.getDay() > DiasDaSemana.DOMINGO
&& data.getDay() < DiasDaSemana.SABADO;
}
private limparFormulario(): void {
this.inputData.value = '';
this.inputQuantidade.value = '';
this.inputValor.value = '';
this.inputData.focus();
}
private atualizaView(): void {
this.negociacoesView.update(this.negociacoes);
this.mensagemView.update('Negociação adicionada com sucesso');
}
}
e View: (caminho: app/src/views/view.ts)
import { inspect } from '../decorators/inspect.js';