[英]Documenting the return of a javascript constructor with jsdoc
我有一个返回构造函数的javascript函数(参见下面的代码示例)。 我如何使用jsdoc的@returns标记来记录这一点。 做@returns {MyConstructor}似乎没有道理,因为这意味着我正在返回“MyConstructor”的实例,而不是构造函数本身,对吧?
function MyConstructor() {
var self = this;
self.myFunction = function() {
return true;
};
self.getMyFunctionResult = function() {
return self.myFunction();
};
}
/**
* @returns {?} A constructor that will be instantiated
*/
function getConstructor() {
return MyConstructor;
}
var constructor = getConstructor();
var instance = new constructor();
您可以使用以下方法检查函数返回的类型:
console.log(typeof constructor, typeof instance); // function object
在文档中它说:
/**
* Returns the sum of a and b
* @param {Number} a
* @param {Number} b
* @returns {Number} Sum of a and b
*/
function sum(a, b) {
return a + b;
}
http://usejsdoc.org/tags-returns.html
所以在你的例子中它将是:
/**
* Returns the MyConstructor class
* @returns {Function} MyConstructor class
*/
function getConstructor() {
return MyConstructor;
}
或者,如果要创建Item的实例:
/**
* Returns an instance of the MyConstructor class
* @returns {Object} MyConstructor instance
*/
function getInstance() {
return new MyConstructor();
}
我不认为有一种方法可以在@returns
之后使用括号来记录返回特定实例。 括号中的内容始终被解释为类型 。 这就是说,有一种方法可以通过记录实例并使用指向实例的链接来记录返回类型的特定实例。 我已经将问题中的代码缩短到了说明所需的基本要素:
/**
* @class
*/
function MyConstructor() {
}
/**
* @returns {Function} A constructor that will be instantiated. Always
* returns {@link MyConstructor}.
*/
function getConstructor() {
return MyConstructor;
}
它也可以用除了类之外的其他东西来完成:
/**
* @public
*/
var foo = 1;
/**
* @returns {number} {@link foo}.
*/
function getFoo(){
return foo;
}
据我所知,这与jsdoc 3一样好。
也许有点晚了,但我今天有问题为你的问题活动找到合适的答案。
当我尝试在WebStorm上自动生成JSDoc时,这就是我得到的:
class Test {}
/**
*
* @return {Test}
* @constructor
*/
function getTestConstructor() {
return Test;
}
返回类型定义仍然很奇怪,但构造函数注释可能会达到目的。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.