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.
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) {}
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]
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) {}
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.