Как работают декораторы для конфигурации / сопоставления маршрутов (TypeScript и Loopback4)?

В Loopback4 конечные точки / операции REST, такие как «GET / greet», отображаются / настраиваются с помощью декоратора над методом, который обрабатывает запрос и возвращает результат:

 @get('/greet', spec)
  greet(name: string) {return "hello"}

Я совершенно не знаком с Loopback и Typescript. У меня вопрос: как вообще работают такие декораторы конфигурации (также и в других фреймворках)?

Некоторые подробные вопросы:

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

Спасибо большое!


person Markus    schedule 15.09.2019    source источник


Ответы (1)


Они оцениваются во время сборки и требуют настройки experimentalDecorators: true в tsconfig.json для их включения.

Документация TypeScript хорошо описывает их здесь: https://www.typescriptlang.org/docs/handbook/decorators.html

person Josh Wulf    schedule 16.09.2019