Wie dokumentiert man ein Wörterbuch in JSDoc?

Lesezeit: 2 Minuten

Benutzer-Avatar
Axel Costas Pena

Nächstes Beispiel haben:

var CONF = {
    locale: {
        "en": {
            name: "English",
            lang: "en-US"
        },
        "es": {
            name: "Spanish",
            lang: "es-ES"
        }
    }
};

Und da ich weiß, dass die Locale-Eigenschaft ein Dictionary-Objekt enthält, das aus der Datenbank stammt, wie kann ich seine inneren Eigenschaften mit JSDoc dokumentieren?

Momentan denke ich darüber nach typedef Typ für meine Gebietsschema-Objekte, dann kann ich das einstellen locale Eigenschaft einfach ein Array meines definierten Typs? Ist dies der richtige Weg?

Benutzer-Avatar
Axel Costas Pena

Laut dem JSDoc 3-Dokumente:

Arrays und Objekte (Typanwendungen und Datensatztypen)

Ein Objekt mit Zeichenfolgenschlüsseln und Zahlenwerten:

{Object.<string, number>}

Es wäre also:

/** @type {{locales: Object.<string, {name: string, lang: string}>}} */
var CONF = {
    locales: {
        en: {
            name: "English",
            lang: "en-US"
        },
        es: {
            name: "Spanish",
            lang: "es-ES"
        }
    }
};

Reiniger, mit @typedef

/**
 * @typedef {{name: string, lang: string}} locale
 */
/**
 * @type {{locales: Object.<string, locale>}}
 */
var CONF = {
    locales: {
        en: {
            name: "English",
            lang: "en-US"
        },
        es: {
            name: "Spanish",
            lang: "es-ES"
        }
    }
};

  • Was bedeuten die doppelten geschweiften Klammern?

    – Minh Nghĩa

    23. Juli 2020 um 19:37 Uhr

  • @MinhNghĩa das ist ein Objekt in einer geschweiften Klammer.

    – JakeDK

    26. Juli 2020 um 19:47 Uhr

  • Ja, das habe ich herausgefunden … VS-Code-Syntax, die FTW hervorhebt

    – Minh Nghĩa

    26. Juli 2020 um 21:48 Uhr

  • Irgendeine Idee, wie man den Namen der ändert string in Object.<string, locale> aus x zu etwas anderem?

    – tdranv

    25. März 2021 um 18:03 Uhr

Benutzer-Avatar
Daniel Winterstein

Soweit ich sagen kann:

Verwenden @typedef und @property Einen benutzerdefinierten Typ zu definieren, ist der “richtige” Weg in JSDoc. Aber es ist umständlich zu schreiben und hässlich zu lesen (eine Todsünde in der Dokumentation).

Der Datensatztyp ist viel übersichtlicher (beachten Sie die doppelte {{s):

   /** {{
         name:string, 
         lang:string
   }} */

  • Hmmm … dies dokumentiert einen einzelnen Eintrag im Locale-Objekt, liege ich falsch? Übrigens dieser Kommentar validiert nicht Wegen der langen Beschreibung solltest du es entfernen 😉

    – Axel Costas Pena

    29. Oktober 2013 um 8:41 Uhr


  • Du liegst nicht falsch! Ich dachte, das wäre das nützlichste Snippet, das ich Ihnen geben könnte, da die Gebietsschema-Variable eine Karte von benutzerdefinierten Gebietsschema-Objekten ist.

    – Daniel Winterstein

    29. Oktober 2013 um 9:30 Uhr

  • Wenn das Dictionary auf einem Array basiert, kann es {Array<{key:string, value:{name:string, lang:string}}>} oder {{key:string, value:{name:string, lang:string} sein }[]} … immer noch Objekte sind in der Regel ein Wörterbuch der Schlüsselwerte in Javascript, und in meinem Fall und im ÁxelCostasPena-Szenario gehe ich lieber mit der ÁxelCostasPena-Lösung.

    – Hassan Faghihi

    14. Januar 2020 um 7:30 Uhr

1187210cookie-checkWie dokumentiert man ein Wörterbuch in JSDoc?

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy