如何使用 Jsdoc 描述超类中定义的扩展类的属性

Posted

技术标签:

【中文标题】如何使用 Jsdoc 描述超类中定义的扩展类的属性【英文标题】:How to use Jsdoc to describe an extended class's property that is defined in super class 【发布时间】:2020-07-15 21:31:10 【问题描述】:

我想做的是这样的:

class A 
  someMethod() 
    //
  


class B 
  constructor (options) 
    this.dependency = options.dependency;
  



class C extends B 
  test()  
    this.dependency.a. // want a to refer to instance of A class and provide intellisense using jsdocs
  

我在普通对象上尝试了一些东西,它可以工作,但我无法让它在类上工作或覆盖某些属性。 这是我尝试过的:

/**
 * @typedef Object WithSomeProp
 * @property  a: A  prop
 * 
 * @typedef C & WithSomeProp extended
 */

/**
 * @type extended
 */
let a = ;
a.prop.a.someMethod // works (shows suggestion)
a.test // works

/**
 * @typedef Object WithOtherProp
 * @property  a: A  dependency
 * 
 * @typedef C & WithOtherProp extendedTwo
 */

/**
 * @type extendedTwo
 */
let b = ;
b.dependency. // doesn't work
b.test // works

所以总体而言,没有任何方法可以稍后在扩展类上以某种方式覆盖属性定义以获得智能感知支持?

【问题讨论】:

【参考方案1】:

我刚刚意识到我可以这样做(我现在感觉很愚蠢)

class C extends B 
  constructor(options) 
    super(options);
    /**
     * @type A
     */
    this.a = options.dependency.a;
  
  test()  
    this.a.someMethod // works fine now
  

【讨论】:

以上是关于如何使用 Jsdoc 描述超类中定义的扩展类的属性的主要内容,如果未能解决你的问题,请参考以下文章

Kotlin扩展函数总结 ★ ( 超类扩展函数 | 私有扩展函数 | 泛型扩展函数 | 扩展属性 | 定义扩展文件 | infix 关键字用法 | 重命名扩展函数 | 标准库扩展函数 )

c ++返回子类,其中函数返回指向超类的指针

使用 JSDoc 设置 ES5 类的属性类型

C中的继承:如何将“超类”属性隐藏到扩展它的类

OO面向对象———扩展类与被扩展类

OOP:如何动态扩展超类中的函数