如何在 vscode 中使用 jsdoc 继承覆盖方法的类型信息

m0t*_*ive 5 javascript jsdoc typescript visual-studio-code

我正在使用带有 jsdoc 类型提示和 vscode typescript 类型检查的 javascript。

为父方法添加 jsdoc 类型信息时,我希望子类中的覆盖继承参数/返回类型。

例如,我有这样的课程:

class Parent {
  /**
   * @param {string} a ...
   * @param {number} b ...
   */
  method(a, b) {
    // ...
  }
}

class Child extends Parent {
  /** @inheritdocs */
  method(a, b) {
    super(a, b);
    // ... do extra stuff ...
  }
}
Run Code Online (Sandbox Code Playgroud)

我想Child#method自动从Parent#method. 我试过了@inheritdocs,但它似乎没有这样做。有没有办法标记这个?

Che*_*leg 0

你可以这样做:

class Parent {
  /**
   * @param {string} a ...
   * @param {number} b ...
   */
  method(a, b) {
    // ...
  }
}

class Child extends Parent {
  /** @type {Parent['method']} */
  method(a, b) {
    super.method(a, b);
    // ... do extra stuff ...
  }
}
Run Code Online (Sandbox Code Playgroud)

这将帮助 VScode 推断类型:

VS-Code 识别类型

请注意,它仅适用于 typescript js-docs。

顺便说一句,webstorm 自己成功识别了类型,不需要我的任何帮助......

虽然我真的很喜欢 VScode,但在这种情况下我会说 -

网络风暴:1 VScode:0

网络风暴