Cursos / Redes de Computadores / Programação Orientada a Objetos / Aula

arrow_back Aula 12 - Generics e Decorators

Decorators e Métodos

Exemplo


class ContaBancaria{
    public _saldo: number;

    constructor(saldo: number){
        this._saldo = saldo
    }

    @test()
    public sacar(valor: number){
        this._saldo -= valor;
        console.log('saque realizado');
    }

    public get saldo() : number {
        return this._saldo;
    }

}

function test(){
    return function(target: any, nomePropriedade: string,

        descritor: PropertyDescriptor){

        //console.log(`Nome do método: ${nomePropriedade}`)
        let metodoOriginal = descritor.value

        descritor.value = function(...args: any[]){
            console.log('Comandos antes da execução do método');
            let retorno = metodoOriginal.apply(this, args)
            console.log('Comandos depois da execução do método');

            return retorno;
        }

        return descritor;

    }
}

Versão 5.3 - Todos os Direitos reservados