web-dev-qa-db-fra.com

Comment indiquer que param est facultatif en utilisant JSDoc en ligne?

Selon le wiki JSDoc pour @ param vous pouvez indiquer qu'un @param est facultatif en utilisant

/**
    @param {String} [name]
*/
function getPerson(name) {
}

et vous pouvez indiquer un paramètre en ligne en utilisant

function getPerson(/**String*/ name) {
}

Et je peux les combiner comme suit, ce qui fonctionne bien.

/**
    @param [name]
*/
function getPerson(/**String*/name) {
}

Mais j'aimerais savoir s'il existe un moyen de tout faire en ligne si possible.

101
studgeek

J'ai trouvé un moyen de le faire en utilisant Google Closure Compiler tapez des expressions . Vous mettez un signe égal après le type comme ceci: function test(/**String=*/arg) {}

47
studgeek

De documentation officielle :

Paramètre facultatif

Un paramètre facultatif nommé foo.

@param {number} [foo]
// or:
@param {number=} foo

Un paramètre optionnel foo avec la valeur par défaut 1.

@param {number} [foo=1]
102
czerny

Après avoir creusé, j'ai trouvé que ça allait aussi

/**
 * @param {MyClass|undefined}
 * @param {MyClass=}
 * @param {String} [accessLevel="author"] The user accessLevel is optional.
 * @param {String} [accessLevel] The user accessLevel is optional.
 */

Un peu plus attrayant visuellement que function test(/**String=*/arg) {}

60
vvMINOvv

Dans le cas où vous utilisez des commentaires de type en ligne sur les arguments de fonction et vous demandez comment marquer un argument de fonction comme facultatif dans cette notation, j'ai trouvé que l'attribution de valeurs par défaut aux arguments facultatifs fonctionnait. Si vous souhaitez que la valeur par défaut soit undefined, vous devez également la définir explicitement, sinon l'argument ne sera pas marqué comme facultatif (même s'il est précédé d'arguments déjà facultatifs):

function demo(
  /** @type {String} */ mandatory,
  /** @type {Number} */ optional1 = 0,
  /** @type {Number} optional2 = undefined,
)

Si vous survolez demo dans votre IDE vous devriez voir les deux optional1 et optional2 apparaissant comme facultatif maintenant. Dans VSCode qui est indiqué par ? après le nom de l'argument (notation TypeScript). Si vous supprimez = undefined de optional2 vous ne verrez que optional1 étant facultatif, ce qui est bien sûr un non-sens, donc la valeur par défaut ici doit être explicite comme je l'ai mentionné dans le paragraphe ci-dessus.

1
Tomáš Hübelbauer