Декораторы TypeScript являются особенностью, которая позволяет изменять или дополнять работу классов, свойств, методов и аксессоров. Главное их применение - предоставление функционала метапрограммирования. Это означает, что они позволяют программистам изменять поведение или структуру программы во время выполнения. Такое возможное только благодаря декораторам, которые добавляют возможность манипулировать классами и их членами на высоком уровне.
Давайте рассмотрим пример применения декоратора в TypeScript. Для начала, опишем простейший декоратор @logMethod
, который будет выводить в консоль информацию о вызываемом методе:
function logMethod(target: any, propertyKey: string, descriptor: PropertyDescriptor) {
const originalMethod = descriptor.value;
descriptor.value = function(...args) {
console.log(`Вызывается метод ${propertyKey} с аргументами ${JSON.stringify(args)}`);
return originalMethod.apply(this, args);
}
return descriptor;
}
Теперь мы можем использовать этот декоратор в классах на своих методах:
class MyClass {
@logMethod
sum(a: number, b: number) {
return a + b;
}
}
const myClass = new MyClass();
console.log(myClass.sum(1,2));
Запуская код выше, вы увидите в консоли сообщение вида: "Вызывается метод sum с аргументами [1,2]". Что подтверждает применение нашего декоратора.
Использование декораторов позволяют нам создавать более чистый и понятный код, а также облегчает изменение поведения отдельных частей нашего приложения. Однако стоит помнить, что декораторы в TypeScript до сих пор находятся в стадии предложения и экспериментальной функции и возможно их поведение может измениться в будущих версиях языка.