2017-07-06 2 views
1

Ich muss eine ES6-Klasse mit JSDoc dokumentieren, die ein Objekt mit Eigenschaften aufnimmt, die die Schlüsselnamen als Namen von Personen haben, so dass die Schlüsselnamen so ziemlich jede beliebige Zeichenfolge sein können, nichts vordefiniert. So ist die Struktur des Objekts sollte wie folgt sein:JSDoc - Wie dokumentiert man Objekt mit generischen Schlüsselnamen?

{ 
    "Name of person": { 
     "age": 31, 
     "hobby": "Tennis" 
    }, 
    "Name of another person": { 
     "age": 29, 
     "hobby": "Running" 
    } 
} 

so der Name jeder Person ein Schlüssel ist, aber es kann überhaupt etwas sein, es ist nicht vorgegeben. Ein Beispiel dessen, was ich bin versucht Dokument:

class ExampleClass { 
    /** 
    * Creates an instance of ExampleClass 
    * @param {Object} peopleObj   - Contains information about people. 
    * @param {String} peopleObj.name  - The name of the person. <----- how should this be documented? 
    * @param {Number} peopleObj.name.age - The age of the person. 
    * @param {String} peopleObj.name.hobby - The hobby of the person. 
    * @memberof ExampleClass 
    */ 
    constructor(peopleObj) { 
     // Do stuff 
    } 
} 

Ich mag das Gefühl, wenn ich setzen „peopleObj.name“ es bedeutet, dass der Schlüssel sollte „name“ sein, aber nicht jeder Name, den Sie mögen. Wie dokumentiere ich das, indem ich dem Nutzer mitbekomme, dass er dort einen beliebigen Namen eingeben kann?


EDIT

Für alle fragen, das ist, wie ich das am Ende zu dokumentieren (es als Antwort nicht hinzufügen kann, da jemand diese Frage geschlossen).

/** 
* Information about a single person. 
* @typedef Person 
* @type {object} 
* @property {number} age - The age of the person. 
* @property {string} hobby - The hobby of the person. 
*/ 
class ExampleClass { 
    /** 
    * Creates an instance of ExampleClass. 
    * @param {Object.<string, Person>} peopleObj - Information about people as {@link Person} 
    *            objects where the key is their name. 
    * @memberof ExampleClass 
    */ 
    constructor(peopleObj) { 
     // Do stuff 
    } 
} 
+0

Sie sind im Wesentlichen ein Wörterbuch zu dokumentieren, so dass die doppelten oben sollte – Icepickle

+0

gelten @Icepickle ich die Frage eher über Namenskonvention/Text Problem ist gefunden, das war eine falsche Interpretation? – Teemu

+0

@Teemu Von dem, was ich lesen kann, will er wissen, wie er dokumentieren sollte, welches Objekt in den Konstruktor übergeben werden soll, da er anscheinend ein Wörterbuch darin sendet (ein Objekt mit einem variablen Namen), ich vermute, dass der Duplikat sollte korrekt sein. Ich bin mir aber sicher, dass der OP seine Idee dazu geben könnte :) – Icepickle

Antwort

0

Vielleicht das?

Nicht wirklich Standard JSDoc, aber bekommt den Punkt über. Sie können dies auch im Text Ihres Kommentars oder in den Parameterbeschreibungen beschreiben.

1

Was Sie beschreiben, ist in der @type JSDoc-Dokumentation enthalten.

Das Objekt dokumentiert werden soll, wie folgt:

/** 
* @typedef Person 
* @type {Object} 
* @property {number} age - the person's age 
* @property {string} hobby - the person's hobby 
*/ 

/** 
* ExampleClass 
*/ 
class ExampleClass { 

    /** 
    * Creates a dictionary of people 
    * @param {Object.<string, Person>} peopleObj - an object with names as keys and Person objects as values. 
    * @memberof ExampleClass 
    */ 
    constructor(peopleObj) {} 
} 
Verwandte Themen