用于在不同文件中定义的对象的JSdoc

我在文件A.js中有函数,它接受在其他文件entity.js中定义的say的数组。

A.js

function put(persons) { } 

entities.js

 function Person(name) { this.name = name; this.age = 10; } 

现在,在A.js中,当我为JS方法写JSdoc的时候,我应该怎么input? 理想情况下应该是{Person []},但我不知道应该如何引用,因为它存在于不同的文件中。 有一种方法,我可以要求像entity.js文件: –

 var Person = require('./entities').Person; 

然后如果我{Person []},它的工作原理,但我只是想导入定义只是为了JSDoc? 这是唯一的办法吗?

你会认为这看起来很可怕,但你可以这样做@param {module:someModule/SubModule~ExportedClass}

MyType.js

 /** * A dummy type module * @module myModule/MyType */ /** * Dummy type */ class MyType { /** * Creates a MyType * @param {Number} foo Some var * @param {Number} bar Some other var */ constructor(foo, bar) { this.foo = foo; this.bar = bar; } } module.exports = MyType; 

一些使用MyType代码

 /** * Test * @inner * @param {module:myModule/MyType~MyType} c The caption */ function test(c){ console.log(c); } 

这会给你这样的东西:

JSDoc输出


关键是要注意JSDoc。 该文档提供了一个注释,详细说明如何使用module:MODULE_NAME指定某些对象或导出是模块的一部分module:MODULE_NAME此处为module:MODULE_NAME语法: CommonJS模块:模块标识符 。

在大多数情况下,您的CommonJS或Node.js模块应该包含一个包含@module标签的独立JSDoc注释。 @module标签的值应该是传递给require()函数的模块标识符。 例如,如果用户通过调用require('my/shirt')加载模块,那么您的JSDoc注释将包含标签@module my/shirt

如果使用不带值的@module标签,JSDoc将尝试根据文件path猜测正确的模块标识符。

当您使用JSDoc名称path从另一个JSDoc注释引用模块时,必须添加前缀module: 。 例如,如果您希望模块my/pants的文档链接到模块my/shirt ,则可以使用@see标记来loggingmy/pants ,如下所示:

下面是另外一个使用你的确切文件和额外的@module声明的@module

entities.js

 /** * Person Module * @module Person */ /** * Creates a person * @class */ function Person(name) { this.name = name; this.age = 10; } module.exports = { Person: Person }; 

A.js

 var Person = require("./entities").Person; /** * Module for putting people somewhere * @module A */ /** * Does something with persons * @param {module:Person~Person[]} persons Some people */ function put(persons) {} module.exports = { put: put }; 

精确的文件示例呈现

使用精确文件进行JSDoc渲染