Как установить декоратор на метод, который не является эндпоинтом?

Для установки декоратора на метод, который не является эндпоинтом в TypeScript, необходимо использовать следующий синтаксис:

1. Создайте декоратор, который вы хотите применить к методу. Декораторы в TypeScript являются функциями, которые принимают три параметра: target, propertyKey и descriptor.

function myDecorator(target: any, propertyKey: string, descriptor: PropertyDescriptor) {
   // Ваш код декоратора
}

2. Примените декоратор к методу, который не является эндпоинтом, используя @ синтаксис перед объявлением метода:

class MyClass {
   @myDecorator
   myMethod() {
      // Ваш код метода
   }
}

3. Внутри кода декоратора вы можете вносить любые изменения в поведение метода или собирать метаданные, которые вам нужны. Например, вы можете изменить код метода, добавить/удалить/изменить логику или определить некоторые данные из объекта target или descriptor.

function myDecorator(target: any, propertyKey: string, descriptor: PropertyDescriptor) {
   // Ваш код декоратора

   // Пример: добавление логики в метод
   const originalMethod = descriptor.value;
   descriptor.value = function() {
      console.log("Декоратор был применен к методу");
      return originalMethod.apply(this, arguments);
   }
}

Обратите внимание, что декораторы в TypeScript могут применяться не только к методам, но и к классам, свойствам или параметрам. Их использование позволяет улучшить читаемость, повторяемость и общность вашего кода, добавляя дополнительную функциональность или метаданные без необходимости внесения изменений в исходный код класса или метода.