jsdoc如何描述返回SAME CLASS变量的静态类方法

时间:2020-04-01 20:54:43

标签: javascript jsdoc

这是我想要获得的非常简单的示例。我的问题是关于@returns标记。我应该在那里写什么?

class Base{
  /**
  * @returns {QUESTION: WHAT SHOUL BE HIRE??}
  */
  static method(){
    return new this()
  }
}

class Sub extends Base{
}

let base= Base.method() // IDE should understand that base is instance of Base
let sub= Sub.method() // IDE should understand that sub is instance of Sub

1 个答案:

答案 0 :(得分:0)

没有“相对”类型。 您可以相当简单地修改扩展类;

/** @extends {Base} */
class Sub extends Base{
  /**  @returns {Sub} */
  static method(){
    return super.method();
  }
}

或者使用第三种类型,即@interface来定义此方法的存在

/** @interface */
class I {
  method() {}
}
/** @implements {I} */
class Base {
  /**  @returns {I} */
  static method(){
    return new this();
  }
}

/** 
 * @extends {Base}
 * @implements {I}
 */
class Sub {
  /**  @returns {I} */
  static method(){
    return new this();
  }
}