Сообщение от monolithed
|
@param {!Object} options
А что значит ! ?
JB это пропускает.
|
В синтаксисе GCC JSDoc - это означает, что значение не может быть null, а указал я потому, что в GCC все объекты (кроме функций-колбеков) по умолчанию могут быть null и строчка
var trololo = options.trololo || [];
содержит потенциальную ошибку, т.к.
null.trololo
вызовет эксепшин.
Напротив, знак ? обозначает, что значение может быть null (для объектов можно не писать, т.к. они могут быть такими по умолчанию) и применяется как правило к элементарным типам: string, number и boolean (кстати следует заметить, что в GCC string != String и т.д. String означает явное создание объекта, а string использование примитива).
Кстати вебшторм понимает спецефичные GCC штуки, вроде ? ! и =
Цитата:
|
/** @param {Object | Array} options */
|
С точки зрения GCC эта конструкция ошибочна, т.к. обязательно нужно указывать круглые скобки при множественном типе данных:
/** @param {(Object | Array)} options */
А нужно это для того, что можно писать так:
/** @param {(Object | Array)=} options */
/** @param {Object=} options */ // Объект, может быть null и undefined
Знак = означает, что параметр опциональный.
Цитата:
|
и зачем они вообще тогда нужны?
|
Для GCC неймспейсы не нужны, они используются как пометки для докогенераторов и людей.
/** @namespace */
var URL = {
getParam: function (){},
...
}