Я пишу модуль для NestJS, где я хотел бы иметь пользовательский ClassDecorator
, который:
- Делает класс
@Injectable
- Вставляет зависимость вэкземпляр класса
Вот несколько строк кода, которые иллюстрируют то, что я ожидаю:
// app.module.ts
@Module({
providers: [AppService, MyClass]
})
export class AppModule {}
// my-class.ts
@MyClassDecorator(AppService)
export class MyClass {}
// Somewhere else where MyClass is injected as `myclass`
console.log(myclass)
// MyClass { injectedThroughDecorator: AppService {} }
Я нашел в Google много ссылок на то, как реализовать пользовательские декораторы иЯ думаю, у меня все хорошо.Я также начал читать некоторые документы о reflect-metadata
, так как я думаю, что отражение могло бы помочь мне достичь этого.
Следующим шагом является определение декоратора метода, который будет иметь доступ к экземпляру AppService
, введенному с помощьюMyClassDecorator
.
Например, предположим, что AppService
реализован как EventEmitter
:
@MyClassDecorator(AppService)
export class MyClass {
@MyMethodDecorator('event')
myDecoratedFunction(eventName: string, data: any) {
console.log(`Hi there! I've been triggered by the AppService's ${eventName} event with ${data}`);
}
}
Есть ли у вас какие-либо советы о том, как мне реализовать такой декоратор?Любая помощь / пример / ссылка будет принята с благодарностью.Наконец, не стесняйтесь спрашивать более подробную информацию или объяснение того, чего я пытаюсь достичь.
Спасибо, что читаете меня, Хорошего дня!