Olá!
Ainda não conseguir assimilar sobre os 3 parâmetros. Não consigo ver como o propertyKey pode chamar o nome do método dos outros arquivos. E esse descriptor no final da função é retornado?
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á!
Ainda não conseguir assimilar sobre os 3 parâmetros. Não consigo ver como o propertyKey pode chamar o nome do método dos outros arquivos. E esse descriptor no final da função é retornado?
Oi Rodolfo, tudo bem?
Desculpe a demora em retornar.
Os três parâmetros mencionados em decorators são geralmente utilizados para decorar classes e métodos, e eles possuem a seguinte função:
O primeiro parâmetro é o objeto de destino, que pode ser uma classe (para decorators de classe) ou um objeto protótipo (para decorators de método).
O segundo parâmetro é o nome da propriedade, que é uma string que representa o nome do método ou propriedade em que o decorator está sendo aplicado. Este parâmetro é opcional e não precisa ser usado em todos os casos.
O terceiro parâmetro é o descritor, que é um objeto que define as propriedades da propriedade ou método que está sendo decorado. O descritor inclui coisas como o valor da propriedade, se é gravável ou não, se é enumerável, etc.
Agora um exemplo para entender melhor:
function meuDecorator(target: Object, propertyKey: string, descriptor: PropertyDescriptor) {
console.log("alvo:", target); // log do objeto alvo
console.log("propertyKey:", propertyKey); // log do nome da propriedade
console.log("descritor:", descriptor); // log do objeto descritor
}
class MinhaClasse {
@meuDecorator
meuMetodo() {
console.log("Olá, mundo!");
}
}No exemplo acima, estamos definindo um decorator chamado meuDecorator e aplicando-o ao método meuMetodo da classe MinhaClasse. Quando o código é executado, o decorator é chamado com os três parâmetros. O primeiro parâmetro é a própria classe MinhaClasse, o segundo parâmetro é o nome do método "meuMetodo" e o terceiro parâmetro é o objeto descritor que define o método.
Respondendo à sua pergunta específica, o propertyKey não chama o nome do método em outros arquivos, ele simplesmente recebe o nome da propriedade em que o decorator está sendo aplicado. E sim, o objeto descriptor é retornado no final da função do decorator.
Espero ter ajudado a esclarecer suas dúvidas.
Um abraço e bons estudos.