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?
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.