Как декораторы свойств могут быть вызваны во время выполнения? - PullRequest
0 голосов
/ 07 июня 2018

Интересно, как бы мы вызывали декоратор свойств во время выполнения.Например, если мы запустим следующий код:

    function PropertyDecorator(
        target: Object, // The prototype of the class
        propertyKey: string | symbol // The name of the property
        ) {
        console.log("PropertyDecorator called on: ", target, propertyKey);
    }

    class PDE {
        @PropertyDecorator
        name: string;
    }

Будет записано PropertyDecorator called on: PDE {} name, поэтому декоратор вызывается при загрузке класса.Предположим, мы хотим вызвать его снова для экземпляра PDE, например:

const newPDE = PDE();
callDecoratorsOnProperties(newPDE);

Как это сделать?

1 Ответ

0 голосов
/ 07 июня 2018

Комментарии верны.Декораторы свойств не могут быть вызваны во время выполнения.Они только проектные сроки.Таким образом, оператор регистрации в примере вопроса выполняется только во время загрузки класса, а затем никогда больше ничего не делает.Это зависит от события 'load`, чтобы предоставить дополнительный механизм экземпляру класса, который можно использовать для цели, на которую я смотрю, что в данном случае является проверкой экземпляра.

Так что мне придетсяdo изменяет прототип класса и предоставляет дополнительную функцию, которая может быть вызвана для проверки экземпляра аннотированного класса.

На случай, если кто-то последует в том же «Следе мысли», мой следующийвопрос был на как передать дополнительные аргументы декоратору .

...