2016-11-27 5 views
1

Ich habe eine Konstruktorfunktion, Foo, dass ich meine Benutzer ohne new anrufen möchten. Zum BeispielDokumentieren Konstruktorfunktionen ohne neue

const myFoo = Foo('bar'); 

für Foo definiert als

function Foo(bar) { 
    if(!this) { return new Foo(bar); } 
    foo.bar = bar; 
    return this; 
} 

Wie dokumentieren wir dies mit JSDoc3? Wenn ich @class (oder @constructor) mit der Standardvorlage verwenden, verwendet der Ausgang immer new Foo(bar). Wenn ich Foo als nur @function dokumentiere, wird keine seiner Instanzmethoden oder -eigenschaften angezeigt, sondern nur die Funktion selbst.

Gibt es eine Möglichkeit, die Klassendefinition von der Konstruktor-Funktion zu trennen? Oder konfigurieren Sie die Ausgabe, um new im Konstruktor nicht anzugeben? @lends und @constructs sucht nach einem ähnlichen Bedarf, aber nach den Konstruktor- und Instanzmethoden, die in einem Objektliteral definiert sind.

Antwort

0

könnten Sie @hideconstructor verwenden? zum Beispiel wie:

/** einige Beschreibung @class @hideconstructor */ Funktion Foo() ...

Dennoch wird dies mit Typoskript über jsdoc Typ-Überprüfung Validierung fehl. Wenn Sie in diesem Fall nicht möchten, dass Ihre Benutzer new niemals verwenden, sollten Sie die Klasse als ClassFoo mit @hideconstructor und separat die Funktion Foo, die @returns {ClassFoo}

ist, dokumentieren