2016-07-12 70 views
5

我想在我的ES6項目中使用JSDoc,我返回地圖:Javascript + JsDoc:如何記錄新的ES6數據類型,如地圖?

/** 
* Some documentation.. 
* 
* @returns {undefined} <- This should be replaced 
*/ 
function returningMap() { 
    const someMap = new Map(); 
    someMap.set("key", {a, b, c}); 
    return someMap; 
} 

我應該如何記錄這跟@returns

有沒有好的答案here

+4

@returns {Map}? – Thomas

+0

我有一個幾乎相似的問題。 https://stackoverflow.com/questions/38309123/jsdoc-with-and-immutable-js-datastructures-in-annotations –

回答

2

答案很簡單,美觀:

/** 
* 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>>

0

您最好的選擇可能是確定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