带有 TS 的 JSDoc - 在智能感知中显示 return 界面注释?

JSDoc with TS - show return interface comments in intellisense?

假设我有一个函数,其 return 值是定义的打字稿接口。接口注释好:

interface ReturnValue {
  /**
   * Wind value, in knots
   */
  wind: number;
  /**
   * Humidity in %
   */
  humidity: number;
}

/**
 * Function to return some values
 * @returns Returner
 */
const myFunction = (): ReturnValue => {
  return {
    wind: 4,
    humidity: 5
  };
};

我希望在使用智能感知时或将鼠标悬停在函数上时能够看到 return 值接口的注释。相反,这是我得到的:

当我不命名接口而是直接将其声明为函数的 return 值时,我得到了 一点 的更多细节:

/**
 * Function to return some values
 */
const myFunction = (): {
  /**
   * Wind value, in knots
   */
  wind: number;
  /**
   * Humidity in %
   */
  humidity: number;
} => {
  return {
    wind: 4,
    humidity: 5
  };
};

这给出:

但即使这样也没有显示我在定义 return 值对象形状时使用的注释。也很乱。

是否可以编写 JSDoc 注释,以便在 typescript 中定义 return 值时,我可以将它们视为智能感知的一部分?

遗憾的是,您在这里没有任何控制权。

Typescript 类型可能会变得很深,将它们完全展开到它们的原子部分对于更复杂的类型来说并不实用。但是,正如您所注意到的,对于简单类型,将它们包装在命名别名中可能有点太快了。一个工具提示有很多页面的界面细节可以滚动浏览,几乎和很少的信息一样无用。

所以打字稿在简洁方面犯了错误,选择向您显示您命名的类型而不是大粒度接口。

如果你想知道这样的类型是什么,你可以做一个,输入一个 . 然后浏览它的界面:

当您实际使用 JS 文档注释时,它们确实会出现:

虽然,我同意有时很难理解类型中的内容,但我认为没有任何方法可以操纵 typescript/vs 代码如何解开和报告类型别名。