@Maximus В случае, когда мы не знаем, в каком формате была построена библиотека. Вот почему Angular использует все три варианта

я использую декоратор в своем классе, декоратор оценивается при импорте класса. Вот небольшой пример:

@NgModule({ ... })
export class BModule { ... }

Транспортируется как:

var BModule = (function () {
    function BModule() {
    }
    BModule = __decorate([  <---------- decorators are applied here
        core_1.NgModule({...})
    ], BModule);
    return BModule;
}());
exports.BModule = BModule;

Тем не менее, когда модуль или любой другой декоратор применяется в@angular В связке вывод выглядит следующим образом:

var HttpClientModule = (function () {
    function HttpClientModule() {
    }
    return HttpClientModule;
}());
HttpClientModule.decorators = [
    { type: _angular_core.NgModule, args: [{ ... },] },
];

Как видите, декораторы здесь не применяются. Они просто сохраняются вdecorators свойство. Почему он отличается от моего кода?

Причина, по которой я спрашиваю, заключается в том, что при импорте декорированных классов я ожидаю, что к ним будут применены декораторыReflect возможно:

const providers = Reflect.getOwnMetadata('annotations', BModule);

Тем не менее, это не работает таким образом с украшенными классами из@angular пакеты.

Ответы на вопрос(1)

Ваш ответ на вопрос