Как правильно определить JSDoc для модулей Node.js в случае расширения / наследования на миксинах
У меня есть три модуля Node.js. Один называется user
получает наследство от base
модуль. handler
Модуль взаимодействует с экземпляром user
:
Базовый модуль - который становится наследником:
/**
* Base module
*/
'use strict';
const _ = require("underscore");
module.exports = {
name: "base",
/**
* Extent object helper
*/
extend: function(child) {
return _.extend({}, this, child);
},
/**
* Delegate event method
*/
delegate: function () {
//some delegate event
}
};
Пользовательский модуль - как модель:
/**
* User module
*/
'use strict';
const BaseController = require("./base");
module.exports = BaseController.extend({
name: "user",
/**
* Init function
*/
init: function() {
}
});
Обработчик - как контроллер:
/**
* Handler module
*/
'use strict';
const user = require("./user");
module.exports = {
name: "handler",
/**
* Some action
*/
someAction: function() {
user.delegate(); // <-- delegate() is not known as a method of "user"
}
};
Важная часть в кодах отмечена комментарием // <-- delegate() is not known as a method of "user"
потому что его наследует base
модуль. Мне очень нравится знать, как создать полный JSDoc для этих модулей, чтобы моя IDE поддерживала автозаполнение моего кода, особенно для user.delegate()
, Ответ, который предоставляет все необходимые JSDoc-блоки, был бы отличным!
1 ответ
Вы можете взглянуть на @inheritdoc
директива:
/**
* @classdesc Abstract class representing a network connection.
* @class
*/
function Connection() {}
/**
* Open the connection.
*/
Connection.prototype.open = function() {
// ...
};
/**
* @classdesc Class representing a socket connection.
* @class
* @augments Connection
*/
function Socket() {}
/** @inheritdoc */
Socket.prototype.open = function() {
// ...
};
Итак, для вашего конкретного случая,
/**
* @class
* @augments Base
**/
module.exports = {
name: 'User'
};