Что такое декоратор в TypeScript

Ответ

Декоратор — это специальная функция, которая добавляет метаданные или изменяет поведение класса, метода, свойства или параметра. В TypeScript декораторы применяются с @-синтаксисом и выполняются во время инициализации класса.

Пример декоратора метода:

function log(target: any, key: string, descriptor: PropertyDescriptor) {
  const originalMethod = descriptor.value;
  descriptor.value = function(...args: any[]) {
    console.log(`Calling ${key} with args:`, args);
    return originalMethod.apply(this, args);
  };
  return descriptor;
}

class Example {
  @log
  greet(name: string) {
    return `Hello, ${name}!`;
  }
}

Основные типы декораторов:

  1. Класса (@ClassDecorator)
  2. Метода (@MethodDecorator)
  3. Свойства (@PropertyDecorator)
  4. Параметра (@ParameterDecorator)

Декораторы часто используются для логирования, валидации, dependency injection (например, в Angular) или модификации поведения.