microsoft / microsoft/TypeScript
JSDoc: @inheritDoc disregards optionality of parameters from parent class method
@sandersn is already working on this.
Since Mar 4, 2020.
- Dominant language
- Go
- Stars
- 111k
- Forks
- 14.3k
- Avg merge
- 2d 4h
- Merged PRs (30d)
- 132
Description
TypeScript Version: 3.8.3
Search Terms: inheritDoc optionality jsdoc
Code
A conceptual example of JSDoc-annotated ES6 classes I'm generating d.ts definitions for
class Base {
/**
* @abstract
* @param {Array<import("./Layer.js").default>} [opt_array] Array of layers (to be
* modified in place).
* @return {Array<import("./Layer.js").default>} Array of layers.
*/
getLayersArray(opt_array) {
return abstract();
}
}
class Derived extends Base {
/**
* @inheritDoc
*/
getLayersArray(opt_array) {
return [];
}
}
Expected behavior:
TypeScript to transpile this to something resembling this
declare class Base {
/**
* @abstract
* @param {Array<import("./Layer.js").default>} [opt_array] Array of layers (to be
* modified in place).
* @return {Array<import("./Layer.js").default>} Array of layers.
*/
getLayersArray(opt_array?: any[]): any[];
}
declare class Derived extends Base {
/**
* @inheritDoc
*/
getLayersArray(opt_array?: any): any[];
}
Actual behavior:
The optionality specifier is lost on Derived.getLayersArray
declare class Base {
/**
* @abstract
* @param {Array<import("./Layer.js").default>} [opt_array] Array of layers (to be
* modified in place).
* @return {Array<import("./Layer.js").default>} Array of layers.
*/
getLayersArray(opt_array?: any[]): any[];
}
declare class Derived extends Base {
/**
* @inheritDoc
*/
getLayersArray(opt_array: any): any[];
}
Playground Link:
Related Issues:
EDIT: In the original ES6 example, the class Derived didn't actually extend Base which led to the possibility I may have submitted an invalid report. Fixing the code sample and re-running the playground with the updated example ES6 code showed the problem to still persist. Code sample in this issue and playground link have been updated.
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Assessment
This issue has not been assessed yet.