网站搜索

typescript - 属性 'shadowRoot' 在类型 上不存在 ts(2339)


在泛型类型的抽象类中使用 ShadowDOM 是否可能?我正在开发一些自定义网页组件,并决定尝试减少与 DOM 相关的重复代码。

目前,我的组件继承自 'HTMLElement'。然而,我希望我的组件像下面这样引用一个基类,但我收到一个错误 '属性 'shadowRoot' 在类型 'B' 上不存在.ts(2339)'

abstract class B <T extends HTMLElement> {
    element: T;

    constructor(DOM:JSDOM, componentType:string) {
        this.element = <T>DOM.createElement(componentType);
        
        this.attachShadow({ mode: 'open' });
        this.shadowRoot!.appendChild(this.element);
        
    }

    async connectedCallback() {
        this.appendChild(this.element);
    }

}