microsoft / microsoft/TypeScript
jsDoc intellisense support for @augments/@extends
Nobody has claimed this yet.
- Dominant language
- Go
- Stars
- 111k
- Forks
- 14.3k
- Avg merge
- 2d 4h
- Merged PRs (30d)
- 132
Description
Issue Type: Feature Request
Please make intellisense support @augments/@extends tags. Currently intellisense is not showing base class properties both prototype and own.
Here is my base class
const fs = require('fs');
/**
* Used as an abstract base class for file classes.
* @param {string} filePath Path of the file.
*/
function FileBase(filePath) {
if (this.__proto__ === FileBase.prototype)
throw `'FileBase' class cannot be instantiated. It's an abstract class.`;
if (!fs.existsSync(filePath))
throw `'filePath' doesn't point an existing file.`;
this.filePath = filePath;
/**
* Stores file content. Dont directly set this property. Use resetContent method instead.
* @type {string}
*/
this.content = fs.readFileSync(filePath).toString();
/**
* Stores fs.Stats of file.
* @type {fs.Stats}
*/
this.stats = fs.lstatSync(filePath);
/**@type {{content:string,stats:fs.Stats}[]} */
this.history = [];
}
/**
* Resets content property with current file content.
* @returns {string} File content.
*/
FileBase.prototype.resetContent = function () {
...
}
module.exports = FileBase;
Example usage of base class. I tagged with @extends.
/**
* @typedef {'module'|'layout-module'|'library'|'standalone-main'|'standalone-dependency'} StyleFileType
*/
/**
* Represents a style file.
* @extends FileBase
* @constructor
* @param {string} filePath Path of file.
* @param {StyleFileType} fileType Type of style.
* @param {Config} config
*/
function StyleFile(filePath, fileType, config) {
if (!(this instanceof StyleFile)) {
return new StyleFile(filePath, fileType, config);
}
/**
* If StyleFile constructor is used to create objects, redirect object creation to child classes.
*/
if (this.__proto__ === StyleFile.prototype) {
switch (fileType) {
case 'module':
return new ModuleStyleFile(filePath, config);
case 'layout-module':
return new LayoutModuleStyleFile(filePath, config);
case 'library':
return new LibraryStyleFile(filePath, config);
case 'standalone-dependency':
return new StandaloneLibraryDependencyStyleFile(filePath, config);
case 'standalone-main':
return new StandaloneLibraryMainStyleFile(filePath, config);
default:
throw 'Invalid file type.';
}
}
FileBase.call(this, filePath);
this.fileType = fileType;
this.config = config;
/**@type {StyleFile[]} */
this.parentFiles = null;
/**@type {StyleFile[]} */
this.childFiles = null;
}
StyleFile.prototype = Object.create(FileBase.prototype);
StyleFile.prototype.getImportedStylePaths = function (content) {
.....
}
module.exports = StyleFile;
Currently it only displays members from the used type.

VS Code version: Code 1.33.0 (0dd516dd412d42323fc3464531b1c715d51c4c1a, 2019-04-04T15:14:28.026Z)
OS version: Windows_NT x64 10.0.17134
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.
Research direction
Start by tracing how JSDoc @extends and @augments annotations are represented and how IntelliSense gathers members for the used type. Use the FileBase and StyleFile examples in this issue to reproduce the missing prototype and own properties, then verify that inherited members appear without breaking existing type-member suggestions.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- javascript, typescript
- Domain
- compilers, developer-experience
- Issue type
- Feature
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Stale
- Clarity
- Mostly clear
- Newbie friendliness
- 35/100