Если вы используете комментарии встроенного типа к аргументам функции и задаетесь вопросом, как пометить аргумент функции как необязательный в этой записи, я обнаружил, что просто присваивает значения по умолчанию дополнительным аргументам. Если вы хотите, чтобы значением по умолчанию было undefined
, вы также должны установить его явно, в противном случае аргумент не будет помечен как необязательный (даже если ему предшествуют уже необязательные аргументы):
function demo(
/** @type {String} */ mandatory,
/** @type {Number} */ optional1 = 0,
/** @type {Number} optional2 = undefined,
)
Если вы наведите курсор мыши на demo
в вашей IDE, вы должны увидеть, как optional1
и optional2
отображаются как дополнительные. В VSCode это обозначено ?
после имени аргумента (нотация TypeScript). Если вы удалите = undefined
из optional2
, вы увидите, что только optional1
является необязательным, что, конечно, бессмысленно, поэтому значение по умолчанию здесь должно быть явным, как я упоминал в предыдущем абзаце.