You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在JSDoc中定义泛型WeakRef的@typedef并指定泛型参数

你修改的带@template的WeakRef类型定义是正确的,声明变量时直接在类型名后用尖括号包裹要指定的泛型参数即可。

正确的类型标注写法

/**
 * @type {WeakRef<HTMLElement>}
*/
#ref;

完整修正后的代码示例

你自定义的WeakRef泛型定义部分无需修改:

/**
 * @typedef {Object} WeakRef
 * @template T
 * @property {function(): T} deref
 */

业务代码修正后:

export class MyCl {
    /**
     * @type {WeakRef<HTMLElement>}
    */
    #ref;

    /**
     * @param {HTMLElement} el
    */
    myMethod(el) {
        this.#ref = new WeakRef(el);
    }

    myMethod2() {
        let htmlEl = this.#ref.deref(); 
        // 此时htmlEl的类型会被正确推导为HTMLElement
    }
}

补充说明

如果你使用的是VSCode内置类型校验、或者其他基于TypeScript的JSDoc校验工具,其本身已经内置了WeakRef的泛型类型定义,你可以省略自己编写的@typedef部分,直接使用WeakRef<HTMLElement>标注类型即可。

内容的提问来源于stack exchange,提问作者user1167761

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.28 06:36:07