我有一个基类,即<代码>abstract, 延伸至HTMLElement
, 称CustomElementRegistry.define
。 打字像使用<条码>,即条码>,作为第二个论点,因为基类为<条码>。 但是,这似乎不正确,因为最后一类显然永远不会抽象。 我不得不使用下面的ug。 是否有更好的办法这样做?
abstract class CustomElement extends HTMLElement {
constructor() {
super();
}
// Without a cast, the `this` argument gets this error:
// tsbug.ts:12:6 - error TS2345: Argument of type this is not assignable to parameter of type CustomElementConstructor .
// Type CustomElement is not assignable to type CustomElementConstructor .
// Type CustomElement provides no match for the signature new (...params: any[]): HTMLElement .
register() {
customElements.define(
"custom-element",
this, // This argument gets the error.
// If you replace the above `this` argument with the one below, it works.
// this as unknown as new () => HTMLElement,
{});
}
}
class MyElement extends CustomElement {
constructor() {
super();
this.register();
}
}
const e = new MyElement();