Вы не можете добавлять декораторы к прямым функциям.Из документации Typescript (https://www.typescriptlang.org/docs/handbook/decorators.html):
Декораторы
Декоратор - это специальный вид объявления, который может быть присоединен к объявлению класса, методу, аксессору, свойству или параметру.Декораторы используют форму @expression, где выражение должно вычислять функцию, которая будет вызываться во время выполнения с информацией о декорированном объявлении.
Когда вы пытаетесь, вы видите, что это не работает таким образом,поскольку функция декоратора, написанная сценарием, предполагает, что существует класс, связанный с тем, что декорируется, как указано в документации.
Однако, и я НЕ РЕКОМЕНДУЕМ ЭТОГО , вы могли бы иметьфункции, которые вам нужны внутри класса, тогда будет применяться следующее:
Декораторы метода
Декоратор метода объявляется непосредственно перед объявлением метода. Декоратор применяется к дескриптору свойствадля метода, и может использоваться для наблюдения, изменения или замены определения метода.Декоратор od нельзя использовать в файле объявлений, при перегрузке или в любом другом окружающем контексте (например, в классе объявления).
Выражение для декоратора метода будет вызываться как функция во время выполнения,со следующими тремя аргументами:
- Либо функция конструктора класса для статического члена, либо
- прототип класса для члена экземпляра.Имя участника.
- Дескриптор свойства для члена.
Затем вы можете сделать некрасивый хак, как это машинописный пример Playground
IЯ предоставляю код здесь, для удобства.Хорошая вещь, которую нужно сделать, если вы проверяете машинописную площадку Playground или компилируете этот код, это видеть сгенерированный Javascript, который ясно показывает, что это не было написано для простых функций.не могу думать о необходимости генерации функций таким образом.Может быть, поток внешних логических данных, как механизм правил?В любом случае, динамическое генерирование такого рода сложно проверить и поддерживать, поэтому имейте это в виду и по возможности рассматривайте другие подходы.