Decorador de classe TypeScript que modifica a instância do objeto

Estou criando um plugin para Aurelia e preciso de um decorador de classe que

adiciona atributos à nova instância do objeto echama uma função externa com o novo objeto como argumento.

Examinei exemplos e até agora reuni (código "pseudo-ish")

return function addAndCall(target: any): any {
    var original = target;

    var newConstructor = function (...args) {
        original.apply(this, args);
        this.newAttribute = "object instance value";
        ExternalModule.externalFunction(this);
    };

    newConstructor.prototype = Object.create(original.prototype);
    newConstructor.prototype.constructor = original;

    return <any>newConstructor;
}

mas

Não sou totalmente claro sobre os detalhes aqui (ou o que é realmente necessário), epode não funcionar corretamente, pois estou recebendo erros do Aurelia ao usar objetos instanciados de classes com esse decorador (e suspeito que seja o meu decorador, e não a estrutura do Aurelia que está com bugs).

Qualquer ajuda e explicação seria muito apreciada!

questionAnswers(2)

yourAnswerToTheQuestion