#node.js #typescript #decorator
Вопрос:
У меня есть случай использования, когда метод класса может быть аннотирован таким образом, и его аргументы и возврат будут записаны в консоль вместе с именем метода с помощью @log decorator
@log
async doOperation(action: String){
}
Теперь я также хочу, чтобы у метода doOperation были свои собственные необходимые инструкции для ведения журнала, но я не хочу жестко кодировать имя метода внутри него. Я могу это сделать
@log
async doOperation(action: String, logger?: Logger){
}
и передайте экземпляр регистратора от декоратора, но это может создать много проблем, когда он будет использоваться для разных методов с разными параметрами, и может вызвать проблемы при их расширении. Есть ли какой-нибудь хороший способ, которым я могу пометить параметр как параметр только для декоратора(будет передаваться только декораторами, вызывающие абоненты не могут его передать).
Пожалуйста, обратите внимание, что я не могу сохранить экземпляр регистратора в экземпляре класса, потому что что, если один и тот же экземпляр класса используется в один момент для синхронного вызова двух разных методов.