Aller au contenu

Convertir JSON en annotations JSDoc — Numio

Construit un commentaire JSDoc @typedef avec une ligne @property par clé à partir d’un échantillon JSON. Les clés imbriquées utilisent des chemins pointés comme address.city, les clés des éléments de tableau name[].key, et les clés optionnelles des [crochets].

Obtenir l’autocomplétion dans l’éditeur pour une réponse d’API dans un projet JavaScript pur.

JSON

JSDoc

Quand l’utiliser

  • Obtenir l’autocomplétion dans l’éditeur pour une réponse d’API dans un projet JavaScript pur.
  • Activer la vérification de types // @ts-check pour des données JSON sans passer à TypeScript.

Mode d’emploi

  1. Collez un objet JSON dans l’éditeur.
  2. Vérifiez les lignes @property à droite : les types viennent des valeurs de l’échantillon, par exemple string[] pour tags et object pour address.
  3. Copiez le commentaire, renommez le typedef json avec un vrai nom et utilisez-le avec @type {YourName}.

Entrée JSON

{
  "id": 42,
  "name": "Ada",
  "tags": ["math", "poetry"],
  "address": { "city": "London", "zip": "NW1" },
  "orders": [
    { "sku": "A1", "qty": 2 },
    { "sku": "B7", "qty": 1, "gift": true }
  ],
  "deletedAt": null
}

JSDoc @typedef

/**
 * @typedef {object} json
 * @property {number} id
 * @property {string} name
 * @property {string[]} tags
 * @property {object} address
 * @property {string} address.city
 * @property {string} address.zip
 * @property {object[]} orders
 * @property {string} orders[].sku
 * @property {number} orders[].qty
 * @property {boolean} [orders[].gift]
 * @property {null} deletedAt
 */

Détails et limites

Le commentaire est généré dans votre navigateur ; aucune donnée n’est envoyée à un serveur. Il n’y a pas de paramètres.

Tous les éléments d’un tableau sont fusionnés : les clés absentes de certains éléments sont écrites entre crochets comme optionnelles, par exemple [orders[].gift].

Une valeur toujours null est typée {null} ; null à côté de valeurs réelles donne une union comme {string|null}. Les tableaux vides sont typés {Array}.

Gardez les identifiants comme 001 sous forme de chaînes dans l’entrée ; une fois parsés comme nombres, les zéros initiaux sont perdus.

FAQ

Comment les tableaux d’objets sont-ils documentés ?

Le tableau est typé object[] et les clés des éléments sont listées avec des chemins name[].key, comme orders[].sku, en combinant les clés de tous les éléments.

Puis-je convertir un tableau JSON à la racine ?

Oui. La forme des éléments devient @typedef {object} jsonItem avec ses propriétés, suivi de @typedef {jsonItem[]} json pour le tableau.

TypeScript comprend-il le typedef généré ?

Oui, TypeScript lit @typedef avec des chemins @property imbriqués dans les fichiers .js quand checkJs ou // @ts-check est activé. Remplacez d’abord tout {null} isolé par le vrai type.

Spécifications et références