中文.
Quickly generate JavaScript/TypeScript comments according to JSDoc, ESDoc and TSDoc rules, and use @ to trigger to reduce the burden of memory.
Generate comments statically, not responsive. For parameter functions or variables of existing types, it is recommended to use the built-in /** to trigger.
If that doesn't work, you may need to configure the editor.
Ctrl + Shift + P / ⇧ + ⌘ + P → Preferences: Open Settings (JSON)
"editor.quickSuggestions": {
"other": true,
"comments": true,
"strings": false
},- Comment Blocks
- Common
- Type Syntax
- Function
- Class
- Misc
Instructions with single, without triggering ///, will generate a complete comment fragment.
Generate a comment fragment triggered by ///:
/// →
/**
* description
*/Then use the following categories to add specific annotation content.
| prefix | body |
|---|---|
@param → |
@param {TYPE} param - description |
@param.property → |
@param {?TYPE} param.name - description |
@param.any / `@paa → |
@param {\*} param - description |
@param.object / @pao / @ppo → |
@param {Object} param - description |
@param.array / @paar / @ppar → |
@param {Object[]} param - description |
@param.string / @pas / @pps → |
@param {string} param - description |
@param.number / @panu / @ppn → |
@param {number} param - description |
@param.boolean / @pab / @ppb → |
@param {boolean} param - description |
@param.Function / @paf / @ppf → |
@param {Function} param - description |
@param.DOMElement / @pad / @ppd → |
@param {DOMElement} param - description |
@param.Node / @pan / @ppnode → |
@param {Node} param - description |
@param.NodeList / @panl / @ppnl → |
@param {NodeList} param - description |
@param.RegExp / @pare / @ppre → |
@param {RegExp} param - description |
@param.generics / @pag / @ppg → |
@param {GenericIdentity<Type>} param - description |
| prefix | body |
|---|---|
@typeParam → |
@typeParam {TYPE} Name - description, (* TS Doc) |
@type → |
@type {TYPE} - description |
@type.boolean → |
@type {boolean} type - description |
@type.Object → |
@type {Object} type - description |
@type.string → |
@type {string} type - description |
@type.number → |
@type {number} type - description |
@type.boolean → |
@type {boolean} type - description |
@type.Function → |
@type {Function} type - description |
@type.DOMElement → |
@type {DOMElement} type - description |
@type.Node → |
@type {Node} type - description |
@type.NodeList → |
@type {NodeList} type - description |
@type.RegExp → |
@type {RegExp} type - description |
| prefix | body |
|---|---|
@property → |
@property {TYPE} property - description |
@property.boolean → |
@property {boolean} property - description |
@property.Object → |
@property {Object} property - description |
@property.string → |
@property {string} property - description |
@property.number → |
@property {number} property - description |
@property.boolean → |
@property {boolean} property - description |
@property.Function → |
@property {Function} property - description |
@property.DOMElement → |
@property {DOMElement} property - description |
@property.Node → |
@property {Node} property - description |
@property.NodeList → |
@property {NodeList} property - description |
@property.RegExp → |
@property {RegExp} property - description |
Example:
class MyClass {
constructor() {
/**
* @type {number}
*/
this.foo = 123;
/**
* @type {Object}
* @property {number} p.foo
* @property {string} p.bar
*/
this.bar = { foo: 123, bar: 'abc' };
}
/** @type {string} */
get baz() {}
/** @type {string} */
set baz(v) {}
/**
* @param {number} param - this is p description.
* @return {Object} this is description.
* @property {number} foo this is description.
* @property {number} bar this is description.
*/
qux(param) {}
}| prefix | body |
|---|---|
@typedef → |
@typedef {TYPE} Name - description |
Example:
/**
* A number, or a string containing a number.
* @typedef {(number|string)} NumberLike
*/
/**
* Set the magic number.
* @param {NumberLike} x - The magic number.
*/
function setMagicNumber(x) { }| prefix | body |
|---|---|
@return/@rt → |
@return {TYPE} description |
@return.promise/@rp → |
@return {Promise<TYPE>} description |
@return (single) → |
/** @return {TYPE} description */ |
@requires → |
@requires module |
@emits → |
/** @emits {eventName} emit event when ... */ |
@listens → |
/** @listens {eventName} listen event because ... */ |
@throws → |
/** @throws {errorType} Will throw an error if argument is null./Argument x must be x. */ |
Example:
/**
* function description
* @param {Object} param - this is object param.
* @param {number} param.foo - this is property param.
* @param {string} param.bar - this is property param.
*/
function myFunc(param) {}
/**
* function description
* @param {{foo: number, bar: string}} param - this is object param.
*/
function myFunc(param) {}
/**
* function description
* @param {{foo: ?number, bar: string}} param - this is nullable property.
*/
function myFunc(param) {}
/**
* function description
* @param {{foo: number, bar: string}} param - this is object destructuring..
*/
function myFunc({ foo, bar }) {}
/**
* @param {number} [param] - this is optional param.
* @param {number} [param=10] - this is default param.
* @param {?number} param - this is nullable param.
* @param {!Object} param - this is not nullable param.
* @param {?(number|string)} param - this is nullable and union param.
* @param {function(foo: number, bar: string): boolean} param - this is function param.
* @param {Array<string>} param - this is Array param.
* @param {Map<number, string>} param - this is Map param.
*/
function myFunc(param) {}| prefix | body |
|---|---|
@class → |
/** @class description. */ |
@class.extends, @extends → |
@extends {SuperClass} |
@class.interface, @interface → |
/** @interface */ |
@class.implements, @implements → |
@implements {Interface} |
@class.constructor, @constructor → |
/** @constructor */ |
@class.virtual/@class.abstract, @virtual/@abstract → |
/** @virtual */ |
@class.sealed, @sealed → |
/** @sealed */ |
@class.override, @override → |
/** @override */ |
@access@deprecated@desc@example@experimental@ignore@link→{@link <identifier>}@see→@see <URL>@note@since→@since MAJOR.MINOR.PATCH@todo→@todo description@version→@version MAJOR.MINOR.PATCH@internal@license
@external@module
- JSDoc - Github/https://jsdoc.app/
- ESDoc - Github/https://esdoc.org/
- TSDoc - Github/https://tsdoc.org/
| type | syntax |
|---|---|
| Simple | @param {string} param - description |
| Array | @param {string[]} param - description |
| Nullable | @param {?Object} param - description |
| Not Nullable | @param {!Object} param - description |
| Union | @param {number|string} param - description |
| Nullable and Union | @param {?(number|string)} param - description |
| Spread | @param {...number} param - description |
| Optional | @param {number} [param] - description |
| Default | @param {number} [param=10] - description |
| Function | @param {function(foo: number, bar: string): boolean} param - description |
| Generics | @param {Map<number, string>} param - description |
| Record | @param {{foo: ?number, bar: string}} param - description |
MIT License
