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