Функции Angular ClassDecorator не видны аннотированному классу
Я работаю с декоратором, который дополняет компоненты дополнительными функциями.
export function I18n(): ClassDecorator {
return function (constructor: any) {
constructor.prototype.interpolate = function (
template: string,
replacements: any
) {
return service.interpolate(template, replacements);
};
constructor.prototype.stringForKeyPath = function (key: string) {
return service.stringForKeyPath(key);
};
};
}
он используется в компонентах
@I18n()
export class AComponent implements OnInit {
aMethod() {
this.interpolate(templateString, replacements)
}
}
или прямо в шаблонах:
{{ stringForKeyPath(aKey)}}
Когда код запускается, все это работает нормально
Но ошибки Typescript, потому что он не понимает, что эти функции добавляются классом декоратора
Если я просто добавлю заполнители в
AComponent
@I18n()
export class AComponent implements OnInit {
interpolate(a: string ,b)=>{return a}
stringForKeyPath(a: string)=>{return a}
aMethod() {
this.interpolate(templateString, replacements)
}
}
тогда это работает, но это некрасиво, и его нужно будет добавлять в каждый файл, который его использует.
Как я могу добавить правильную типизацию для поведения, добавленного через ClassDecorator?