Как вы документируете массив объектов как параметр в JSDoc?

У меня есть массив, который выглядит так:

[{
    "name": "c917379",
    "email": "[email protected]"

},
{
    "name": "c917389",
    "email": "[email protected]"
}]

Это массив произвольной длины с несколькими повторяющимися полями (для ясности я уменьшил это до двух полей). Это передается в метод JavaScript.

/**
 * @param {?}  data
 */
update:  function(data) {...}

Мне было интересно, как вы зарегистрируете это в JSDoc. То есть. как бы вы задокументировали тип, в котором знак вопроса?

Ответ 1

Я только что понял ответ на мой вопрос:

Это будет выглядеть так:

/**
 *
 * @param {{name:string, email:string}[]}  
 *
 */

Ответ 2

В JSDoc приведен пример для массива с элементами типа MyClass. Это выглядит так:

@param{Array.<MyClass>}

Итак, вы также можете сделать следующее:

@param{Array.<Object>}

И тогда это также имеет смысл:

@param{Array.<{name:string, email:string}>}

Ответ 3

Так как внутри содержимого объекта нет ничего особенного, я считаю, что вам просто нужно объявить его как:

@param {Object[]} data

Альтернативой было бы объявить "правильную" конструкторскую функцию для вашего "класса", а затем заменить Object на это имя функции.

Эта инкапсуляция может также помочь другим частям вашего кода; -)

Ответ 4

Так как это первый вопрос, который появляется в Google, я думаю, что это полезно показать, как документально оформить двумерный массив.

Синтаксис по умолчанию не работает, он выглядит как "Ошибка синтаксиса JsDoc":

/**
 * @param {Object[][]} a two dimensional array of object
 * */

Правильный способ сигнализации двумерного массива:

/**
 * @param {Array.<Array.<Object>>} a two dimensional array of object
 * */