TypeScript: Decoradores e suas Aplicações
Descubra o que são decoradores em TypeScript e como utilizá-los para modificar o comportamento de classes e métodos.
TypeScript: Decoradores e suas Aplicações
Os decoradores são um recurso poderoso do TypeScript que permite adicionar anotações e metaprogramação a classes e seus membros. Eles são uma maneira de modificar o comportamento de classes, métodos, propriedades ou parâmetros de forma declarativa.
O que são Decoradores?
Um decorador é uma função que pode ser aplicada a uma classe, método, acessador, propriedade ou parâmetro. Decoradores podem ser usados para adicionar funcionalidades extras, registrar informações ou até mesmo alterar o comportamento padrão.
Exemplo de Decorador de Classe
Aqui está um exemplo simples de um decorador que registra a criação de uma classe:
function logClass(target: Function) {
console.log(`Classe criada: ${target.name}`);
}
@logClass
class Usuario {
constructor(public nome: string) {}
}
const usuario = new Usuario('João');
Decoradores de Método
Os decoradores também podem ser aplicados a métodos. Por exemplo, um decorador que mede o tempo de execução de um método:
function logExecutionTime(target: any, propertyName: string, descriptor: PropertyDescriptor) {
const originalMethod = descriptor.value;
descriptor.value = function (...args: any[]) {
const start = performance.now();
const result = originalMethod.apply(this, args);
const end = performance.now();
console.log(`Método ${propertyName} executado em ${end - start} ms`);
return result;
};
}
class Calculadora {
@logExecutionTime
somar(a: number, b: number) {
return a + b;
}
}
const calc = new Calculadora();
calc.somar(5, 3);
Decoradores de Propriedade
Os decoradores também podem ser aplicados a propriedades. Aqui está um exemplo que transforma uma propriedade em um valor somente leitura:
function Readonly(target: any, propertyName: string) {
Object.defineProperty(target, propertyName, {
writable: false,
});
}
class Produto {
@Readonly
nome: string;
constructor(nome: string) {
this.nome = nome;
}
}
const produto = new Produto('Produto A');
produto.nome = 'Produto B'; // Erro: a propriedade é somente leitura
Conclusão
Os decoradores são uma maneira poderosa de adicionar funcionalidade e modificar o comportamento em TypeScript. Eles oferecem uma forma limpa e declarativa de aplicar lógica em classes e métodos, permitindo que você escreva código mais organizado e legível.
Autor: Nathan Mota
Tags: TypeScript, Decoradores, Programação