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

PhpStorm/WebStorm中JSDoc能否标注接收原型并返回实例的方法?

当然可以实现这种类型标注!

你已经找对了方向,只需要调整JSDoc里的构造函数类型声明和模板语法,就能让PhpStorm/WebStorm完美识别这个方法的类型关联。

修正后的正确写法

/**
 * 创建指定构造函数的实例
 * @template T
 * @param {new(props: Object): T} Model 要实例化的构造函数(原型对应的类/构造器)
 * @param {Object} props 实例化时传入的属性参数
 * @return {T} 返回构造函数的新实例
 */
function create(Model, props) {
  return new Model(props);
}

关键细节解释

  • @template T:声明一个通用类型变量T,用来关联构造函数和返回值的类型,这样IDE就能追踪到“传入的构造函数类型”和“返回的实例类型”是完全一致的。
  • {new(props: Object): T}:这是JSDoc标注构造函数类型的标准写法,表示Model是一个可以通过new关键字调用、接受Object类型参数、返回T类型实例的构造器。你原来写的prototype<T>不是标准的JSDoc语法,IDE无法正确识别这种类型关联。

实际效果演示

当你在PhpStorm/WebStorm里使用这个函数时,IDE会自动做精准的类型推断:

// 定义一个示例构造函数
class User {
  constructor(props) {
    this.name = props.name;
    this.age = props.age;
  }

  greet() {
    console.log(`Hi, I'm ${this.name}`);
  }
}

// 调用create函数
const user = create(User, {name: "Alice", age: 28});
// IDE会自动识别user是User类型,能直接提示greet方法、name/age属性
user.greet(); // 会有完整的代码补全和类型检查

这样配置后,不管你传入什么构造函数,IDE都能准确推断返回实例的类型,提供对应的智能提示和类型校验。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 04:12:53