Когда выполняется код Decorator? - PullRequest
0 голосов
/ 04 мая 2018

Для приведенного ниже синтаксиса,

import validator from "./ZipCodeValidator";

, который импортирует словарь объектов из ZipCodeValidator.ts в имя validator в текущем пространстве имен, во время сборки / объединения,

где ZipCodeValidator.ts выглядит так:

export class C {
    @f()
    @g()
    method() {}
}

Аннотируются ли декораторы (f & g) методами в ZipCodeValidator.ts, выполняемыми при выполнении оператора импорта (см. Выше) во время сборки / объединения?

1 Ответ

0 голосов
/ 04 мая 2018

Декораторы всегда выполняются, когда выполняется объявление класса. Поскольку большинство объявлений классов часто находятся в области видимости верхнего уровня модуля, то может означать, что они запускаются при выполнении кода, но ничто не мешает вам иметь объявление класса внутри другой функции, в В этом случае декораторы будут работать только при вызове этой функции.

В вашем конкретном случае фабрика декораторов f() будет запускаться во время объявления для возврата фактической функции декоратора, а затем объявление класса вызовет декоратор.

Сама функция декоратора всегда может изменить method для вызова некоторой пользовательской логики при вызове method, но сам декоратор к этому времени уже давно завершен.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...