Никуда не пропадают, это я неправильную реализацию написал. Если делать так, то всё работает:
function logClass(target: any) {
// сохраняем ссылку на исходный конструктор
var original = target;
// вспомогательная функция для генерации экземпляров класса
function construct(constructor, args) {
var c : any = function () {
return constructor.apply(this, args);
}
c.prototype = constructor.prototype;
return new c();
}
// новое поведение конструктора
var f : any = function (...args) {
console.log("New: " + original.name);
return construct(original, args);
}
// копируем прототип, чтобы работал оператор instanceof
f.prototype = original.prototype;
// возвращаем новый конструктор (он переопределит исходный)
return f;
}