2013-05-27 12 views
13

Jak udokumentować metodę w JavaScript przy użyciu JSDoc, gdy typ parametru można mieszać?Jak udokumentować JSDoc z mieszanym typem parametru?

Mam metodę na obiekcie dialogowym, w którym mogę wyświetlać HTML lub moje własne obiekty widoczne. Metoda JSDoc wygląda następująco:

/** 
* Can pass in viewable object, or some HTML element 
* 
* @param viewable viewable {Viewable} or HTML element {HTMLElement} or String {string} 
* @param {Boolean} cancelable is cancellable 
* @param title string or data object of String and Id {Title:String, Id:String} for setting HTML id value 
* @param {Array} actions array of functions actions display buttons on the bottom connecting to the passed in functions 
* @param {String} size mode. Can be mini,small,medium,large,maxi. Or of type {width:number, height:number} 
* @param {Number} zindex starting z-order. Note: first level dialog = 10,11,12, second level dialog 13,14,15 etc. 
*/ 
Dialog.showElement = function(viewable, cancelable, title, actions, mode, zindex){ 
.. 
} 

Ponieważ JS nie pozwala metoda przeciążenia, muszę stworzyć tego typu metod, gdzie parametr w metodzie mogą być dwie rozbieżne rodzaje. Czy istnieje sposób udokumentowania tego w JSDoc, czy też JSDoc pozwala ci tylko dokumentować param z jednym typem?

Również, w jaki sposób można dokumentować parametr typu {Title:String, Id:String}? Oznacza to, że obiekt przekazany, który nie jest typu. Quasi, obiekt JSON.

+1

To może nie być częścią oryginalnej specyfikacji JSDoc (nie wiem), ale spójrz na ten artykuł, który wyjaśnia, jak opisywać JS dla kompilatora Google Closure: https://developers.google. com/closure/compiler/docs/js-for-compiler # types. Ma również przykład "typów rekordów". –

Odpowiedz

16

Można użyć | separator aby określić wiele typów w podpisie typu metoda:

/** 
* Some method 
* @param {Object|string|number} param The parameter. 
* @returns {Object|string|number} The modified param. 
*/ 
function doSomething(param) { 
    return etc.. 
}; 
+0

, ale co z moją {Title: String, Id: String} rzeczą. Czy mogę tylko udokumentować to jako {Obiekt}? –

+1

Więc jeśli miałbym to i ciąg, czy udokumentowałbym to jak @param {String | {title: String, id: Object}} param? –

+0

w porządku, dziękuję za pomoc! :) –

2

Google Closure Compiler Docs polecam poniższy formularz - która wygląda urzędnika, ponieważ jest taka sama, jak znaleźć na usejsdoc.org:

/** 
* Some method 
* @param {(Object|string|number)} param The parameter. 
* @returns {(Object|undefined)} The modified param. 
*/ 
function doSomething(param) { 
    return etc.. 
}; 

przytoczyć powyżej, połączonego zamknięcia kompilatora dokumentów:

Zwróć uwagę na nawiasy, które są wymagane.

Powiązane problemy