jsDoc intellisense support for @augments/@extends #30943
Open
Description
opened on Apr 15, 2019
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
Activity