如何在评论/JSDoc 中引用另一种打字稿类型?

Posted

技术标签:

【中文标题】如何在评论/JSDoc 中引用另一种打字稿类型?【英文标题】:How do I refer to another typescript type in comments/JSDoc? 【发布时间】:2017-11-02 12:29:48 【问题描述】:

我熟悉 Javadoc。在 Javadoc 中,you can place a link that refers to the Javadoc placed on another type 是这样的:

/**
 * some java thingy. see this other java thingy too @link OtherThingy
 */
public class Thingy  /*...*/ 

/**
 * some other java thingy. see the first java thingy too @link Thingy
 */
public class OtherThingy /*...*/ 

我可以在 typescript 的 JSDoc 中做同样的事情吗?我知道我可以在 cmets 中使用 markdown 并且可以放置网络链接,但这并不是我想要的。

此外,任何对 JSDoc/typescript 文档工具的引用都会非常有帮助:)

编辑:根据下面的答案,这是 JSDoc 的一个功能,但似乎不包含在 VSCode 中。 VSCode 中有有效的语法吗?

【问题讨论】:

【参考方案1】:

您当然可以,尽管您的里程可能会有所不同。

1:A use of @link in Selenium-Webdriver's TypeScript typing file

/**
 * Converts a level name or value to a @link logging.Level value.
 * If the name/value is not recognized, @link logging.Level.ALL
 * will be returned.
 * @param (number|string) nameOrValue The log level name, or value, to
 *     convert .
 * @return !logging.Level The converted level.
 */
function getLevel(nameOrValue: string | number): Level;

2:Docs about @link in JSDoc

以下示例显示了为 @link 标记提供链接文本的所有方法: 提供链接文本

/**
 * See @link MyClass and [MyClass's foo property]@link MyClass#foo.
 * Also, check out @link http://www.google.com|Google and
 * @link https://github.com GitHub.
 */
function myFunction() 

默认情况下,上面的示例会产生类似于以下内容的输出: @link 标签的输出

See <a href="MyClass.html">MyClass</a> and <a 
href="MyClass.html#foo">MyClass's foo
property</a>. Also, check out <a 
href="http://www.google.com">Google</a> and
<a href="https://github.com">GitHub</a>.

【讨论】:

我可能应该尝试一下 javadoc 的语法吧? 我刚开始使用typedoc,它支持@link。你的答案值得检查【参考方案2】:

VS Code 将@link 视为注释,因此它不会进行任何特殊解析(它只是完全按照您输入的方式显示)。不过,目前有 an open issue 来解决这个问题。

【讨论】:

请参阅上面关于@link supprot 的评论。【参考方案3】:

使用 VSCode 1.52(2020 年 11 月),您还可以考虑使用另一个标签:

Initial support for JSDoc @see tags

JSDoc @see 标签让您可以在您的 JSDoc cmets 中引用其他函数和类。

以下示例显示了从另一个文件引用 WrappedError 类的崩溃函数:

// @filename: somewhere.ts
export class WrappedError extends Error  ... 

// @filename: ace.ts
import  WrappedError  from './somewhere'

/**
* @see WrappedError
*/
function crash(kind) 
   throw new WrappedError(kind);

VS Code 现在将在执行重命名时包含基本的 @see 引用。

您也可以在@see 标签的内容上运行 go to definition,@see 标签也会显示在参考列表中。

我们计划在未来的版本中继续改进对 @see 标记的支持。

正如马克在the comments 中指出的那样:

PR 119358 在 VSCode 1.55(2021 年 3 月)中增加了对 JSDoc 链接标签的支持 VSCode 1.57(2021 年 5 月)adds @link support

JSDoc@link 支持

我们现在在 javascript 和 TypeScript cmets 中支持 JSDoc @link tags。

这些可让您在文档中创建指向符号的可点击链接:

JSDoc @link 标签写为:@link symbolName.

您还可以选择指定要呈现的文本来代替符号名称:@link class.property Alt text

在悬停、建议和签名帮助中支持@link。 我们还更新了vscode.d.ts 以使用@link

【讨论】:

2020 年的更好答案。不错 @Mark 好点,谢谢。我已经编辑了答案以包含该参考。 vscode 中的@link 支持:github.com/microsoft/vscode-docs/blob/vnext/release-notes/… @Mark 谢谢。我已经相应地编辑了答案。

以上是关于如何在评论/JSDoc 中引用另一种打字稿类型?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 index.d.ts 打字稿定义文件中引用 Redux 类型?

打字稿:如何在此文档中引用另一个文档的字段?

如何为 react-native 本机 ui 组件创建打字稿类型定义?

如何处理模块和打字稿类型的笑话模拟功能

打字稿:从类型中排除所有必需的属性

打字稿定义无法导入Angular2