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

如何用JSDoc为JavaScript类定义泛型类型(无需TypeScript)

用JSDoc实现类的泛型类型推导

要实现你想要的泛型类型推导效果,只需要给MyValue类添加JSDoc的泛型声明,约束属性和方法的类型即可:

/**
 * @template T
 */
class MyValue {
  /** @type {T} */
  myValue;

  /**
   * 设置值,约束传入值的类型为泛型T
   * @param {T} value
   */
  setValue(value){
     this.myValue = value;
  }

  /**
   * 获取值,返回值类型自动匹配泛型T
   * @returns {T}
   */
  getValue(){
     return this.myValue;
  }
}

/* @type { MyValue<number> } */
const a = new MyValue();
a.setValue(123);
const av = a.getValue(); // 此时av会被自动推导为number类型

/* @type { MyValue<string> } */
const b = new MyValue();
b.setValue('456');
const bv = b.getValue(); // 此时bv会被自动推导为string类型

关键说明:

  • @template T:声明一个泛型参数T,让整个类可以复用这个类型变量
  • 给myValue属性标注@type {T}:明确属性的类型为泛型参数T
  • setValue方法用@param {T} value:约束传入的参数必须和泛型T的类型一致
  • getValue方法用@returns {T}:指定返回值类型和泛型T绑定

这样配置后,当你用@type {MyValue<number>}或@type {MyValue<string>}标注实例时,编辑器就能自动推导getValue()的返回值类型,实现你要的类型提示效果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.17 14:22:36