2016-07-12 29 views
5

Ich versuche JSDoc in meinem ES6 Projekt zu verwenden, ich bin der Rückkehr eine Karte:Javascript + JsDoc: Wie dokumentiert man neue ES6-Datentypen wie map?

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

Wie soll ich dieses Dokument mit @returns?

Es gibt keine gute Antwort here.

+4

@returns {Map}? – Thomas

+0

Ich habe ein fast ähnliches Problem. https://stackoverflow.com/questions/38309123/jsdoc-with-and-immutable-js-datastructures-in-annotations –

Antwort

2

Die Antwort ist einfach und schön:

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

Das Grundmuster ist Map<KeyType, ValueType>. In Ihrem Beispiel wäre der Schlüssel eine Zeichenfolge und ein Wert für ein Objekt. Du könntest sogar dein Objekt deklarieren. Zum Beispiel:

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

Und dann würde Ihre Karte als Map<String, MyObject> deklariert werden. Cool, nicht wahr? Sie können auch andere Karten oder sogar Sets verschachteln, z. B. Map<Number, Set<MyObject>>.

0

Ihre beste Wette ist wahrscheinlich Map und Freunde mit @external irgendwo zu definieren:

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

Dann wird Ihre Art definiert werden, so können Sie @returns {Map} sagen, wie die Kommentare sagen.

Ein praktischer Ort, um alle URLs und Einzeiler an einem Ort zu erhalten, ist von tern.