jsdoc-inheritparams-plugin
v1.0.6
Published
Inherit parameters documentation from any class or function with JSDoc.
Readme
JSDoc inherit params plugin
Inherit parameters documentation from any class or function with JSDoc.
Install
With yarn:
yarn add jsdoc-inheritparams-plugin --devWith npm:
npm install jsdoc-inheritparams-plugin --save-devAdd the plugin to your JSDoc config:
{
"plugins": [
"node_modules/jsdoc-inheritparams-plugin"
]
}Usage
All these examples work with any kind of function (constructor, member's function, global function).
Consider the following User class:
/**
* Represents a user.
* @class User
* @param {string} firstname User's firstname.
* @param {string} lastname User's lastname.
*/
class User {
constructor(firstname, lastname) {
this.firstname = firstname
this.lastname = lastname
}
}Inherit parameters
@inheritparamsautomatically determines super class from@extends.
/**
* Represents an admin user.
* @class AdminUser
* @extends User
* @inheritparams
*/
class AdminUser extends User {
constructor(...args) {
super(...args)
this.admin = true
}
}Specify super class or function
You can give an explicit super class of function to inherit parameters from.
The given class or function can be any valid JSDoc path.
/**
* Represents an admin user.
* @class AdminUser
* @extends User
* @inheritparams User
*/
class AdminUser extends User {
constructor(...args) {
super(...args)
this.admin = true
}
}Add extra parameters:
/**
* Represents an admin user.
* @class AdminUser
* @extends User
* @inheritparams
* @param {string} username Admin username.
* @param {string} email Admin email.
* @param {string} password Admin password.
*/
class AdminUser extends User {
constructor(firstname, lastname, username, email, password) {
super(firstname, lastname)
this.admin = true
this.username = username
this.email = email
this.password = password
}
}Specify inherited parameters offset
Prefix the offset with a colon:
@inheritparams :4.
Super class or function path can be specified before offset:@inheritparams CustomClass:4.
The default offset is0so inherited parameters are inserted before extra parameters (see previous example).
The offset can be negative so it start from the end of extra parameters.
/**
* Represents an admin user.
* @class AdminUser
* @extends User
* @inheritparams :1
* @param {string} username Admin username.
* @param {string} email Admin email.
* @param {string} password Admin password.
*/
class AdminUser extends User {
constructor(
username,
firstname, lastname, // Offset 1
email,
password
) {
// ...
}
}/**
* Represents an admin user.
* @class AdminUser
* @extends User
* @inheritparams :2
* @param {string} username Admin username.
* @param {string} email Admin email.
* @param {string} password Admin password.
*/
class AdminUser extends User {
constructor(
username,
email,
firstname, lastname, // Offset 2
password
) {
// ...
}
}/**
* Represents an admin user.
* @class AdminUser
* @extends User
* @inheritparams :3
* @param {string} username Admin username.
* @param {string} email Admin email.
* @param {string} password Admin password.
*/
class AdminUser extends User {
constructor(
username,
email,
password,
firstname, lastname, // Offset 3
) {
// ...
}
}/**
* Represents an admin user.
* @class AdminUser
* @extends User
* @inheritparams :-1
* @param {string} username Admin username.
* @param {string} email Admin email.
* @param {string} password Admin password.
*/
class AdminUser extends User {
constructor(
username,
email,
password,
firstname, lastname, // Offset -1
) {
// ...
}
}/**
* Represents an admin user.
* @class AdminUser
* @extends User
* @inheritparams :-2
* @param {string} username Admin username.
* @param {string} email Admin email.
* @param {string} password Admin password.
*/
class AdminUser extends User {
constructor(
username,
email,
firstname, lastname, // Offset -2
password
) {
// ...
}
}