Olá. Não ficou claro pra mim o porquê declaramos o metodoOriginal e uso dele, alguém poderia me explicar? Obrigada.
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!
Olá. Não ficou claro pra mim o porquê declaramos o metodoOriginal e uso dele, alguém poderia me explicar? Obrigada.
Olá, Carolina, tudo bem?
Desculpe a demora em retornar.
Para explicar essa questão, é necessário entender o que são os Decorators.
Decorators são recursos do Typescript que permitem adicionar funcionalidades a classes, propriedades, métodos ou parâmetros de funções. Eles funcionam como uma espécie de "envelope" que envolve o elemento que está sendo decorado, permitindo adicionar comportamentos ou atributos extras.
Quando você cria um Decorator de método, por exemplo, está adicionando uma funcionalidade extra a esse método, que será executada sempre que o método for chamado. Nesse caso, você pode querer manter uma referência ao método original para garantir que o comportamento original do método seja mantido.
Isso pode ser feito através da criação de uma variável que armazena o método original. Por exemplo:
function meuDecorator(target: any, propertyKey: string, descriptor: PropertyDescriptor) {
const metodoOriginal = descriptor.value;
descriptor.value = function(...args: any[]) {
// faça alguma coisa antes da execução do método original
const resultado = metodoOriginal.apply(this, args);
// faça alguma coisa depois da execução do método original
return resultado;
}
return descriptor;
}
Nesse exemplo, o Decorator meuDecorator recebe três parâmetros: o objeto que contém o método decorado (target), o nome do método (propertyKey) e um objeto que contém a descrição do método (descriptor). O método original é armazenado na variável metodoOriginal, e é chamado dentro da função anônima que é atribuída ao descriptor.value.
Ao manter uma referência ao método original, você pode garantir que o comportamento original do método seja mantido, mesmo que você adicione comportamentos extras através do Decorator.
Espero que essa explicação tenha esclarecido suas dúvidas.
Um abraço e bons estudos.