Support standard class constructor JSDoc
The way that documentation.js forces us to document classes is incorrect:
/**
* A foo.
* @param {*} value Value.
*/
class Foo {
constructor(value) {
this.value = value
}
}
/**
* A foo.
*/
class Foo {
/**
* Constructs a new foo.
* @param {*} value Value.
*/
constructor(value) {
this.value = value
}
}
Attempting to use the standard approach will result in documentation not appearing, or the constructor docs take over the class description.
Not only is the documentation.js way unintuitive and a common gotcha, but it causes problems using JSDoc linters that expect a standard approach. This ESLint config will report an error that the constructor is missing JSDoc:
{
"rules": {
"require-jsdoc": ["error", {
"require": {
"ClassDeclaration": true,
"MethodDefinition": true
}
}]
}
}
There is no way to configure the ESLint require-jsdoc to ignore constructor. You can't use normal eslint ignore rule directive comments (// eslint-disable-next-line require-jsdoc) as a workaround due to https://github.com/documentationjs/documentation/issues/1090. You're just stuck 😔
As part of a fix:
- Remove this warning.
- Remove this advice.
Related:
- https://github.com/documentationjs/documentation/issues/109
I was wondering why my constructor wasn't being outputted in all the documentation. This explains it.
I really hope this can get fixed.
@balupton Same here, I was oblivious as to why the documentation wasn't showing anything from the constructor's doclet when it was valid.
Please peruse the current maintenance status. I eagerly review and merge PRs, so the way to get this done is by doing it.