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