JSDoc用不同的参数类型注释子类

时间:2019-11-22 12:05:56

标签: javascript typescript annotations jsdoc .d.ts

我想正确地记录以下方法,您有一个基类和多个孩子,每个孩子都有一组特定的属性。问题在于我们的类型提示无法正常工作,它们总是为any属性返回attrs

class Model {
  constructor(attrs) {
     this.attrs = attrs
  }
}

class User extends Model {
  /**
    * @param {UserAttributes} attrs
    */
  constructor(attrs) {
    super(attrs)
  }
}

class Company extends Model {
  /**
    * @param {CompanyAttributes} attrs
    */
  constructor(attrs) {
    super(attrs)
  }
}

我尝试使用以下方法,但它们似乎不起作用

/**
 * @template T
 */
class Model {
  /**
    * @param {T} attrs
    */
  constructor(attrs) {
    this.attrs = attrs
  }
}
/**
 * @template T
 */
class Model {
  /**
    * @param {InstanceType<T>} attrs
    */
  constructor(attrs) {
    this.attrs = attrs
  }
}

/**
  * @type {UserAttributes}
  */
const attrs = {}
const user = new User(attrs)
/**
 * @class
 * @property {UserAttributes} attrs
 */
class User {
  super(attrs)
}

一个人如何做到这一点?

我们正在编写普通的JS,但是我们在代码库中确实使用了JSDoc / Typescript检查,并设置了VS Code,以便它可以读取我们的自定义*.d.ts文件,因此也许我们也可以利用这些文件。 / p>

0 个答案:

没有答案