如何在JSDoc中定义类参数的类型?

问题描述

我有一个项目,其中包含一些Web组件类,并且我还有一个接收这些组件并将其注册到窗口中的函数。 例如:

/**
* @param {} ComponentClass - class that extends HTMLElement
* @param {string} displayName - tag name to be used in html
*/
function registerComponent(ComponentClass,displayName){
  window.customElements.define(displayName,ComponentClass);
}

我的问题是:如何正确键入ComponentClass?有没有办法描述它是扩展HTMLElement的类?

解决方法

CustomElementConstructor是您所追求的,例如

/**
 * @param {CustomElementConstructor} ComponentClass - class that extends HTMLElement
 * @param {string} displayName - tag name to be used in html
 */
function registerComponent(ComponentClass,displayName) {
  window.customElements.define(displayName,ComponentClass);
}

class WCTest extends HTMLElement {}

registerComponent(WCTest,'wc-test');