TypeScript 删除注释并破坏 JSDoc 文档

标签 typescript jsdoc jsdoc3

目标是从 TypeScript 代码中获取 JSDoc 文档。 TypeDoc(TypeScript 文档解决方案)的文档质量是 Not Acceptable ,因为该文档是针对 JS 用户的,不应充斥着特定于 TypeScript 实现(接口(interface)等)的细节。

目前转译为 ES6 并从 JS 文件生成文档在很大程度上可以解决问题。除了没有分配值的属性。看起来,

class A {
    /**
     * @private
     * @var _a
     */
    private _a;

    /**
     * @public
     * @var a
     */
    public a = true;
}

正在被转译为

class A {
    constructor() {
        /**
         * @public
         * @var a
         */
        this.a = true;
    }
}

虽然我希望是这样的

class A {
    constructor() {
        /**
         * @private
         * @var _a
         */

        /**
         * @public
         * @var a
         */
        this.a = true;
    }
}

class A {
    /**
     * @private
     * @var _a
     */

    constructor() {
        /**
         * @public
         * @var a
         */
        this.a = true;
    }
}

如何为 TypeScript 中未分配的类成员提供注释(尤其是 JSDoc)?是否有可以使注释保留在原位的技巧(即使 private _a; 在转译代码中不存在)?

最佳答案

Is there a trick that could make the comments stay in place?

您几乎可以肯定实际上并不想要这个。例如,以下代码不产生任何输出:

/** an interface */
interface Q { }

如果编译器要保留文档,那么它们在许多(几乎所有)情况下都是多余的和误导的。如果它出现在 class C 之上,那么该文档似乎适用于该类(如果该类没有自己的文档,则更加困惑)。如果我正在阅读您问题中的示例,我想知道 this.a 实际上是第一个文档声称的 @private 还是 @public。其他程序员和您的工具没有正确的方法来解释这些流浪文档。

当 TS 和 JS 之间存在直接对应关系时,编译器会保留文档,严格来说是因为这样做没有任何坏处(即使实用性很小)。但它不会也不应该保留与其应用的代码分离的文档。

查看文档的最佳位置是直接在 TypeScript 源代码中(在您的编辑器中,或通过源映射)。 TypeScript 文件是您的源,而不是发出的 JS:使用 a TypeScript doc generator .编译或转译的代码不是文档的有用位置,并且保留问题所询问的特定文档会产生误导。

关于TypeScript 删除注释并破坏 JSDoc 文档,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35175380/

相关文章:

javascript - 我将输出作为二叉树的对象,如何将此对象值放入数组中以继续处理进一步的问题

javascript - 有什么方法可以避免使用 JSDoc "@method"注释

javascript - JSDoc 正确记录事件监听器

requirejs - JSDOC:是否可以链接到模块属性?

javascript - JSDoc 3.3.3 ES6 模板字符串刻度线上出现意外标记 ILLEGAL

javascript - 在 JSDoc 中描述对象数组

generics - TypeScript 似乎不允许高阶函数参数泛型

node.js - 为什么我使用 nodemon 和 ts-node 时 Node 检查器不启动?

node.js - 解析器中的 Angular HttpClient 问题

javascript - 将静态文件添加到 JSDoc