2013-06-16 14 views
6

Wie kann ich einen Konstruktor (Funktion) als Parameter übergeben?JSDoc 3 Dokumentkonstruktor/Klassenparameter

Beispiel:

/** @class */ 
function A() {} 

/** 
* @param {Function} aConstructor 
*/ 
function createA(aClass) { 
    return new aClass(); 
} 

Wie Sie sehen können, kann ich angeben, dass es sich um eine Funktion handelt. Ich kann jedoch nicht angeben, welches Objekt diese Funktion erstellen würde. Gibt es eine Möglichkeit, dies zu dokumentieren?

Danke.

+0

Warum nicht unter '@ returns 'wie' @returns {A} 'oder wenn mehrere Typen möglich sind, könntest du' @returns {A | B}} ''? –

+0

Es scheint, dass Sie dies mit '@constructs ' tun können (siehe das zweite Beispiel unter http://usejsdoc.org/tags-constructs.html) –

+0

In diesem genauen Fall würde ich tatsächlich diesen Datentyp zurückgeben. Dies bedeutet jedoch nicht unbedingt, dass es sich um den erwarteten Datentyp des Parameters selbst handelt. Gleiches mit Ihrem anderen Beispiel. – samanime

Antwort

0

Wie in den Kommentaren besprochen, würde ich eine Anfrage einreichen, weil es scheint, dass ich diese Fähigkeit nicht unterstütze. Unter Verwendung des Ansatzes von instanceof ist "Function" am nächsten bei der Darstellung der Objektinstanz für einen Konstruktor vorerst. Wie erwähnt, kann @constructs oder @returns Ihnen helfen, die Ausgabe, aber nicht die Parametereingabe anzuzeigen.

9

Google mit seiner Schließung vorschlagen eine {Funktion (neu: Typ)} als eine Typbeschreibung. ich angenommen habe, dass man so etwas wie diese verwenden können (ich verwende es mit AMD):

/** @param {function(new:ClassOrInterfaceName)} aClass */ 

Sie weitere Informationen finden Sie hier: http://google-styleguide.googlecode.com/svn/trunk/javascriptguide.xml#JavaScript_Types

Ich hoffe, meine Antwort jemand helfen)

+1

Aktuelle und detailliertere Informationen finden Sie hier: https://developers.google.com/closure/compiler/docs/js-for-compiler#types – conceptdeluxe

+1

.. . z.B Um Parameter für den Konstruktor zuzulassen, kann man '{function (new: FooBar, string, number)}} usw. benutzen. – conceptdeluxe