这是我想要获得的非常简单的示例。我的问题是关于@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
答案 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();
}
}