Декораторы TypeScript — это мощная функция, позволяющая разработчикам изменять поведение классов, методов, свойств или параметров во время разработки. Они предоставляют возможность добавить метаданные или дополнительные функции к целевому элементу, обернув его функцией декоратора. В этой статье мы рассмотрим различные варианты использования и приведем примеры кода, демонстрирующие универсальность декораторов TypeScript.
- Декоратор класса:
Декоратор класса применяется к объявлению класса и может использоваться для изменения поведения класса или добавления метаданных. Вот простой пример:
function logger(target: Function) {
// Modify class behavior or add metadata
console.log(`Class ${target.name} created.`);
}
@logger
class MyClass {
// Class implementation
}
- Декоратор метода:
Декоратор метода применяется к методу внутри класса и может использоваться для изменения его поведения или добавления метаданных. Вот пример:
function auditLog(target: any, propertyKey: string, descriptor: PropertyDescriptor) {
const originalMethod = descriptor.value;
descriptor.value = function (...args: any[]) {
console.log(`Method ${propertyKey} called with arguments: ${args}`);
const result = originalMethod.apply(this, args);
console.log(`Method ${propertyKey} returned: ${result}`);
return result;
};
return descriptor;
}
class MyClass {
@auditLog
myMethod() {
// Method implementation
}
}
- Декоратор свойства.
Декоратор свойства применяется к свойству внутри класса и может использоваться для изменения его поведения или добавления метаданных. Вот пример:
function readonly(target: any, propertyKey: string) {
const descriptor: PropertyDescriptor = {
writable: false,
};
return descriptor;
}
class MyClass {
@readonly
myProperty: string = "read-only value";
}
- Декоратор параметров:
Декоратор параметров применяется к параметру внутри метода или конструктора и может использоваться для изменения его поведения или добавления метаданных. Вот пример:
function validate(target: any, propertyKey: string, parameterIndex: number) {
// Modify parameter behavior or add metadata
console.log(`Validating parameter ${parameterIndex} of method ${propertyKey}`);
}
class MyClass {
myMethod(@validate param: string) {
// Method implementation
}
}
Декораторы TypeScript предоставляют мощный инструмент для изменения поведения классов, методов, свойств или параметров во время разработки. В этой статье мы рассмотрели различные типы декораторов, включая декораторы классов, декораторы методов, декораторы свойств и декораторы параметров. Понимание и использование декораторов может значительно повысить гибкость и расширяемость вашего кода TypeScript.
Используя декораторы, вы можете добавлять метаданные, изменять поведение или даже реализовывать сквозные задачи, такие как ведение журнала, кэширование, проверка и многое другое. Включение декораторов в ваши проекты TypeScript может привести к созданию более чистого и удобного в обслуживании кода.
Не забывайте экспериментировать и исследовать различные возможности, которые предлагают декораторы. Декораторы TypeScript позволяют создавать инновационные и эффективные способы формирования кода.