Как задокументировать обработчик событий в JSDoc?

Предположим, у меня есть такой класс:

function myClass(q) {
  this.someFunction = function(e) {
      console.log("Click event");
  };

  jQuery(q).click(this.someFunction);
}

Есть ли способ указать JSDoc, что someFunction — это не просто функция, которую следует вызывать напрямую, а скорее обработчик событий?

Я вижу тег @event, но если я правильно понимаю, это больше для документирования функции в моем классе, которую я считаю событием (что-то, что клиентский код тоже зарегистрирует, и что мой класс будет срабатывать при необходимости), а не обработчик события функция?


person SBUJOLD    schedule 19.02.2010    source источник


Ответы (2)


Нет, нет никакого способа задокументировать обработчик событий.

Поэтому лучший способ - документировать это как обычную функцию, возможно, написав в ее описании жирным шрифтом или заглавными буквами, что является «ОБРАБОТЧИКОМ СОБЫТИЙ».

Вы, наверное, уже сейчас это делаете, но на всякий случай: можете написать жирным шрифтом, просто обернув текст в html-теги <strong></strong>.

Этот ответ устарел, но не позволяет мне его удалить.

person Marco Demaio    schedule 21.06.2010
comment
Этот ответ следует удалить. - person Chris Marisic; 26.05.2015
comment
@Chris Marisic: я согласен, но это не позволяет мне удалить его, потому что это принятый ответ. - person Marco Demaio; 01.06.2015
comment
Вы можете отредактировать его, используя зачеркивания, чтобы исключить свой старый ответ, а затем либо дать правильный ответ, либо направить пользователей к чьему-то правильному ответу. - person Nobbynob Littlun; 05.04.2016

Ключевое слово: @listens.

Пример использования:

/**
 * Outputs the event that happened
 *
 * @param {MyEvent} e - The observable event.
 * @listens MyEvent
 */
function myEventLogger(e) {
    console.log(e);
}

Следствием этого является ключевое слово @fires для вызова события.

person Chris Marisic    schedule 30.07.2014
comment
@listens теперь является задокументированной функцией JSDoc 3. - person RienNeVaPlu͢s; 03.03.2015
comment
Я наткнулся на этот пост в поисках способа документирования таких событий, как io.on('connection', function(socket) { // do things } ); в socket.io и $(document).on('click', '.my_class', function() { // do things } ); в jQuery. Кажется ссылка на соответствующие комментарии jsdoc не включается в сгенерированную документацию при использовании чего-то вроде @listens connection? Возможно, потому что нет способа определить последующее событие @fires — например, код socket.io, создающий событие connection? То же самое для примера jQuery — как бы вы определили событие @fires для обработчика клика? - person user1063287; 16.06.2019