2016-05-11 5 views
1

Gibt es einen akzeptierten Weg (der vorzugsweise IDE-kompatibel ist), um die Form verschachtelter Elemente in ES6 zu dokumentieren?Wie dokumentieren ES6-Klassenmitglieder mit verschachtelten Strukturen?

Zum Beispiel

class Foo extends React.Components { 
    constructor(props) { 
     super(props); 
     this.props.bar; // Webstorm for example will think 'bar' is not a member of props 
    } 
} 

Gibt es etwas, das wir die IDE helfen beim Verständnis der erwarteten Struktur unserer Klasse Mitglieder tun können? Etwas wie:

/** @member {string} props.bar **/ 

an der Spitze der Klassendeklaration oder Konstruktor

+1

es so etwas ist. Typoskript. – estus

+0

Ich benutze das für Dinge ... nicht eine Option für alle Projekte, die ich nicht vollständig besitze :-( – echen

+1

Typ Hinting ist einer der Gründe, warum Menschen zu TS wechseln, auch wenn Typprüfung keinen wirklichen Nutzen für ihre Projekte bietet. Ich vermute, dass Ihre beste Wette ist Flow, es unterstützt [kommentierte Anmerkungen] (http://flowtype.org/blog/2015/02/20/Flow-Comments.html) und bekam etwas Unterstützung von IDEs. – estus

Antwort

1

@property irgendwie funktioniert, aber fühlt sich schuppig.

/** 
* @property {object} props 
* @property {number} props.bar 
*/ 
class Foo extends React.Components { 
    constructor(props) { 
     super(props); 
    } 
} 

hässlich wie die Hölle, aber funktioniert wie am Schnürchen:

class Foo extends React.Components { 
    constructor(props) { 
     super(props); 

     /** @type {{foo: {bar: {}}}} */ 
     this.props = this.props; 
    } 
} 
+0

Danke, das erscheint Ich werde mit Approach # 1 gehen – echen