Oi Matheus, tudo bem?
Desculpe a demora em retornar.
É uma excelente pergunta! Na verdade, o nome dos parâmetros na função retornada por um decorator pode ser qualquer nome que você desejar.
Porém, é importante lembrar que a posição dos parâmetros é fundamental. Os parâmetros da função retornada por um decorator seguem uma ordem específica: primeiro, o objeto que será decorado ("target"); depois, o nome da propriedade que será decorada ("key" no seu exemplo) e, por último, o descritor da propriedade ("descriptor").
Ou seja, a posição dos parâmetros é fixa, mas os nomes podem ser escolhidos livremente. Se você preferir usar "propertyKey" em vez de "key", por exemplo, não há problema algum.
Aqui está um exemplo para ilustrar como isso funciona:
function meuDecorator() {
return function(target: any, key: string, descriptor: PropertyDescriptor) {
console.log("target:", target);
console.log("key:", key);
console.log("descriptor:", descriptor);
}
}
class MinhaClasse {
@meuDecorator()
meuMetodo() {}
}
Observe que o nome do segundo parâmetro no decorator ("key") é diferente do nome do segundo parâmetro na definição da classe ("meuMetodo"). Isso não causa nenhum problema, pois a posição dos parâmetros é respeitada.
Espero que tenha esclarecido sua dúvida!
Um abraço e bons estudos.