bar — это простой декоратор класса, добавляющий свойство к классу Foo.
function bar(target) {
target.inDecorator = 'in decorator';
}
@bar
class Foo {
inClass:string;
inDecorator:string;
constructor() {
this.inClass = 'a string';
}
getInClass() {
return this.inClass;
}
}
console.log(Foo.inDecorator);
console.log(Foo.prototype.inDecorator);
const foo = new Foo();
console.log(foo.getInClass());
console.log(foo.inDecorator);
Единственный консольный лог, вызывающий ошибку, это первый, Foo.inDecorator, включение которого в ts 1.5.3 дает
Property 'inDecorator' does not exist on type 'typeof Foo'.
Насколько я могу судить, inDecorator должен быть определен в прототипе класса Foo и должен быть доступен в Foo, как если бы это была статическая опора. Запуск полученного файла js показывает undefined для доступа к прототипу, а также для нового объекта foo, однако Foo.inDecorator печатает правильно, даже если он является источником ошибки. Для большей ясности получаем
in decorator
undefined
a string
undefined
Любые идеи о том, как правильно ввести/добавить статическую опору или метод?
Спасибо!
Отредактировал это, так как изначально упустил из виду тот факт, что доступ к прототипу Foo.prototype.inDecorator не работал.