Javascript + JsDoc:如何记录像地图这样的新 ES6 数据类型?

Javascript + JsDoc: How to document new ES6 datatypes like map?

我正在尝试在我的 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

你最好的选择可能是在某处定义 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}
 */

然后你的类型将被定义,所以你可以像评论说的那样说@returns {Map}

在一个地方获取所有 URL 和一行的方便的地方是 tern

答案简单又漂亮:

/**
 * Some documentation.
 *
 * @return {Map<String, Object>}
 */
function returningMap() {
    const someMap = new Map();
    someMap.set("key", {a, b, c});
    return someMap;
}

基本模式是Map<KeyType, ValueType>。在您的示例中,键是一个字符串,值是一个对象。您甚至可以继续声明您的对象。例如:

/**
 * @typedef {Object} MyObject
 * @property {Number} a
 * @property {Number} b
 * @property {String} c
 */

然后您的地图将被声明为 Map<String, MyObject>。很酷,不是吗?您还可以嵌套其他地图甚至集合,例如 Map<Number, Set<MyObject>>.