jsdoc-inheritparams-plugin v1.0.6
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
) {
// ...
}
}