【问题标题】:Javascript + JsDoc: How to document new ES6 datatypes like map?Javascript + JsDoc:如何记录新的 ES6 数据类型,如地图?
【发布时间】:2016-11-14 06:29:41
【问题描述】:
我正在尝试在我的 ES6 项目中使用 JSDoc,我正在返回一个 Map:
/**
* Some documentation..
*
* @returns {undefined} <- This should be replaced
*/
function returningMap() {
const someMap = new Map();
someMap.set("key", {a, b, c});
return someMap;
}
我应该如何使用@returns 记录这一点?
没有好的答案here。
【问题讨论】:
标签:
javascript
ecmascript-6
jsdoc
jsdoc3
【解决方案1】:
答案简单而优美:
/**
* Some documentation.
*
* @return {Map<String, Object>}
*/
function returningMap() {
const someMap = new Map();
someMap.set("key", {a, b, c});
return someMap;
}
基本模式是Map<KeyType, ValueType>。从您的示例中, key 将是一个字符串并 value 一个对象。你甚至可以继续声明你的对象。例如:
/**
* @typedef {Object} MyObject
* @property {Number} a
* @property {Number} b
* @property {String} c
*/
然后您的地图将被声明为Map<String, MyObject>。很酷,不是吗?您还可以嵌套其他地图甚至集合,例如 Map<Number, Set<MyObject>>。
【解决方案2】:
您最好的选择可能是在某处定义Map 和@external 的朋友:
/**
* The Map object is a simple key/value map. Any value (both objects and primitive values) may be used as either a key or a value.
* @external Map
* @see {@link https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Map}
*/
然后你的类型将被定义,所以你可以像 cmets 所说的那样说@returns {Map}。
tern 是在一个地方获取所有 URL 和单行代码的便捷位置。