Я только начал использовать декораторы в Typescript, и у меня возникают проблемы с добавлением метода в класс.
Как бы вы получили доступ к this
в добавленном методе. Например:
const decorator = (target: any): void => {
target.prototype.doSomething = () => {
// how can you access the class instance here?
console.log('in the new method! value =', this.myValue);
};
};
@decorator
class Something {
public myValue = 42;
}
const obj = new Something();
obj.doSomething(); // displays in the new method! value = undefined
Я понимаю, что декоратор получает класс в качестве аргумента, и это то, что он модифицирует, поэтому имеет смысл, что экземпляр (который еще не был создан) недоступен. Но в то время, когда метод вызывается, экземпляр существует.
Я прочитал довольно много обсуждений декораторов в сети, и есть много примеров использования console.log
, чтобы проиллюстрировать, как работают эти методы. , но я не нашел ни одного, который бы на самом деле ссылался на использование this
в методе.
Возможно ли это вообще?