Ответ 1
Я только что понял ответ на мой вопрос:
Это будет выглядеть так:
/**
*
* @param {{name:string, email:string}[]}
*
*/
У меня есть массив, который выглядит так:
[{
"name": "c917379",
"email": "[email protected]"
},
{
"name": "c917389",
"email": "[email protected]"
}]
Это массив произвольной длины с несколькими повторяющимися полями (для ясности я уменьшил это до двух полей). Это передается в метод JavaScript.
/**
* @param {?} data
*/
update: function(data) {...}
Мне было интересно, как вы зарегистрируете это в JSDoc. То есть. как бы вы задокументировали тип, в котором знак вопроса?
Я только что понял ответ на мой вопрос:
Это будет выглядеть так:
/**
*
* @param {{name:string, email:string}[]}
*
*/
В JSDoc приведен пример для массива с элементами типа MyClass
. Это выглядит так:
@param{Array.<MyClass>}
Итак, вы также можете сделать следующее:
@param{Array.<Object>}
И тогда это также имеет смысл:
@param{Array.<{name:string, email:string}>}
Так как внутри содержимого объекта нет ничего особенного, я считаю, что вам просто нужно объявить его как:
@param {Object[]} data
Альтернативой было бы объявить "правильную" конструкторскую функцию для вашего "класса", а затем заменить Object
на это имя функции.
Эта инкапсуляция может также помочь другим частям вашего кода; -)
Так как это первый вопрос, который появляется в Google, я думаю, что это полезно показать, как документально оформить двумерный массив.
Синтаксис по умолчанию не работает, он выглядит как "Ошибка синтаксиса JsDoc":
/**
* @param {Object[][]} a two dimensional array of object
* */
Правильный способ сигнализации двумерного массива:
/**
* @param {Array.<Array.<Object>>} a two dimensional array of object
* */