На сьогоднішній день існує 4 різних способи документування об'єктів як параметрів / типів. У кожного є своє використання. Тільки 3 з них можна використовувати для документування повернених значень.
Для об'єктів з відомим набором властивостей (Варіант А)
/**
* @param {{a: number, b: string, c}} myObj description
*/
Цей синтаксис ідеально підходить для об'єктів, які використовуються лише як параметри для цієї функції та не потребують подальшого опису кожного властивості. Він може бути використаний для @returns
а .
Для об'єктів з відомим набором властивостей (Варіант В)
Дуже корисними є параметри з синтаксисом властивостей :
/**
* @param {Object} myObj description
* @param {number} myObj.a description
* @param {string} myObj.b description
* @param {} myObj.c description
*/
Цей синтаксис ідеально підходить для об'єктів, які використовуються лише як параметри для цієї функції та потребують подальшого опису кожної властивості. Це не можна використовувати для @returns
.
Для об'єктів, які будуть використовуватися в більш ніж одній точці джерела
У цьому випадку дуже зручним є @typedef . Ви можете визначити тип в одній точці джерела і використовувати його в якості типу для @param
або @returns
або інших тегів JSDoc , які можуть зробити використання типу.
/**
* @typedef {Object} Person
* @property {string} name how the person is called
* @property {number} age how many years the person lived
*/
Потім ви можете використовувати це в @param
тезі:
/**
* @param {Person} p - Description of p
*/
Або в @returns
:
/**
* @returns {Person} Description
*/
Для об’єктів, значення яких всі однотипні
/**
* @param {Object.<string, number>} dict
*/
Перший тип (рядок) документує тип ключів, які в JavaScript завжди є рядком або принаймні завжди будуть примусові до рядка. Другий тип (число) - тип значення; це може бути будь-який тип. Цей синтаксис можна використовувати і для @returns
.
Ресурси
Корисну інформацію про типи документування можна знайти тут:
https://jsdoc.app/tags-type.html
PS:
для документування необов'язкового значення можна використовувати []
:
/**
* @param {number} [opt_number] this number is optional
*/
або:
/**
* @param {number|undefined} opt_number this number is optional
*/