I’m a fan of Proxy
but TS supporting dynamic props aren’t so clear for me.
Can I somehow tell TS that a class implements an interface in a dynamic way like that?:
Playground
class MyElement<T extends HTMLElement> implements T{
static create<T extends HTMLElement>(elem: T){
return new MyElement(elem);
}
constructor(elem: T){
return new Proxy(elem, {
get(target, prop){
return target[prop as keyof T];
}
});
}
}
const body = MyElement.create<HTMLBodyElement>(document.body as HTMLBodyElement);
console.log(body.innerHTML);