Типы и виды функций в JavaScript
Декоратор — это специальная функция, которая модифицирует класс, метод, свойство или параметр. В TypeScript декораторы добавляют метаданные или изменяют поведение без изменения исходного кода.
Декораторы объявляются с @ и применяются к классам или их членам. Они работают на этапе инициализации, а не во время выполнения.
Пример декоратора метода:
function log(target: any, key: string, descriptor: PropertyDescriptor) {
const originalMethod = descriptor.value;
descriptor.value = function (...args: any[]) {
console.log(`Вызван метод ${key} с аргументами: ${args}`);
return originalMethod.apply(this, args);
};
return descriptor;
}
class Calculator {
@log
add(a: number, b: number) {
return a + b;
}
}
const calc = new Calculator();
calc.add(2, 3); // В консоли: "Вызван метод add с аргументами: 2,3"Типы декораторов:
Класса — модифицирует конструктор.
Метода — изменяет поведение метода.
Свойства — добавляет валидацию или логирование.
Параметра — проверяет или преобразует аргументы.
Применение:
Валидация данных (например, @MinLength(5)).
Логирование, кеширование, авторизация.
Фреймворки (Angular, NestJS).
Декораторы помогают расширять функциональность кода чисто и декларативно.