Я проксирую методы, используя следующую обертку:
public static wrap(target) {
function construct(constructor, args) {
const c: any = function(this) {
return constructor.apply(this, args);
};
c.prototype = constructor.prototype;
return new c();
}
const f = (...args) => {
const instance = construct(target, args);
const descriptors = getMethodDescriptors(target, instance);
return new Proxy<T>(
instance,
new SomeProxyHandler(descriptors)
);
};
f.prototype = target.prototype;
return f;
}
Это хорошо сработало при переносе классов, скомпилированных до ES5, но теперь я пытаюсь нацелиться на ES6. Я получаю ошибки вconstructor.apply(this, args)
говоря, что:
TypeError: Class constructor OneOfMyClasses cannot be invoked without 'new'
Как я могу исправить этот код, чтобы wrap
мог прокси-классы независимо от цели JavaScript и поддерживать правильную цепочку прототипов?