Decoradores de clases TypeScript - agregar método de clase
¿Cómo definir propiedades con TypeScript y decoradores?
Por ejemplo, tengo este decorador de clase:
function Entity<TFunction extends Function>(target: TFunction): TFunction {
Object.defineProperty(target.prototype, 'test', {
value: function() {
console.log('test call');
return 'test result';
}
});
return target;
}
Y úsalo:
@Entity
class Project {
//
}
let project = new Project();
console.log(project.test());
Tengo este registro de consola:
test call entity.ts:5
test result entity.ts:18
Este código funcionó correctamente, pero el error de retorno de tsc:
entity.ts(18,21): error TS2339: Property 'test' does not exist on type 'Project'.
¿Cómo arreglar este error?