Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

[Projeto] A decorator não aparece no console

Olá,

Acredito que tenha feito o processo da aula direitinho, mas na hora de rodar a decorator inspect não apareceu no meu console. Alguém pode me ajudar?

Aqui meu código:

export function inspecionar() {
    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;
    }
}

E caso seja útil, a view.ts:

import { inspecionar } from "../decorators/inspecionar.js";
import { logarTempoDeExecucao } from "../decorators/logar-tempo-de-execucao.js";

export abstract class View<T> {

    protected elemento: HTMLElement;
    private escapar = false;

    constructor(seletor: string, escapar?: boolean) {
        const elemento = document.querySelector(seletor);
        if (elemento) {
            this.elemento = elemento as HTMLElement;
        } else {
            throw Error(`Seletor ${seletor} não existe no DOM. Verifique`);
        }
        if (escapar) {
            this.escapar = escapar;
        }
    }

    @inspecionar()
    @logarTempoDeExecucao(true)
    public update(model: T): void {
        let template = this.template(model);
        if (this.escapar) {
            template = template
                .replace(/<script>[\s\S]*?<\/script>/, '');
        }
        this.elemento.innerHTML = template;
    }

    protected abstract template(model: T): string;
}

Agradeço desde já!

1 resposta
solução!

Oi!

Beleza! Olha, dei uma olhada no teu código e parece estar tudo certinho. Às vezes, esses decorators podem ser meio chatinhos mesmo.

Primeira coisa que eu faria é checar se tu tá importando o arquivo certo onde tá o decorator inspecionar. Pode ser que tenha rolado um caminho errado nos imports, sabe como é.

Outra parada, confirma se tá chamando o método update da tua classe View. Às vezes a gente esquece de chamar e aí o decorator nem é ativado.

E por último, verifica se não tem algum erro ou aviso no console que tá passando batido. Às vezes o problema nem é no decorator, mas algo anterior que tá bloqueando.

Espero que uma dessas dicas ajude a resolver! Se não, dá um grito aí que a gente continua tentando desvendar esse mistério do console. Boa sorte!