Як повернути порожнечу в JsDoc?


81

Чи є вказаний спосіб оголосити метод або функцію для повернення void у JsDoc? В даний час я впевнений, що voidзначення за замовчуванням повертається, і інші значення, що повертаються, повинні бути вказані спеціально:

/**
 * @return {Integer} The identifier for ...
 */

eslint.org/docs/rules/valid-jsdoc каже, що ах,@returns {void} хтось це вже згадав: stackoverflow.com/a/45450508/470749
Райан,

Відповіді:


93

Я не вірю, що вам потрібно вибирати з набору типів у JsDoc ... ви можете використовувати будь-яке ім’я типу, яке хочете (фігурні дужки вказують, що це тип), тому ви можете просто зробити:

@return {Void}

Хоча, це, мабуть, правильніше для JavaScript:

@return {undefined}

може бути також @returns {void}?
hellboy

8
@Eugene null- це не обов'язково те саме, щоundefined
BadHorsie

6
@return {Void}видає попередження про перевірку коду в IntelliJ IDE @return {undefined}і @return {void}ні.
Шанімаль

4
nullніколи не є таким, як undefined. Коли щось є нульовим, воно все ще визначається, але не має значення. Невизначеним, ну, не визначено :-)
Магнус Ерікссон

3
У специфікаціях Ecmascript перелічено типи мови. Значення, яке повертає voidоператор, становить undefined. Ім'я типу значення undefined- це Undefined, незважаючи на те, що typeof undefinedмає значення "undefined". Назва Voidне визначена в специфікаціях Ecmascript.
Аарон Мансгайм

104

Компілятор закриття

Відповідно до документації компілятора закриття Google, якщо нічого не повертається, анотацію @return слід опустити.

Якщо значення повернення немає, не використовуйте тег @return.

Джерело: https://developers.google.com/closure/compiler/docs/js-for-compiler#tags

jsdoc-інструментарій

Однак у подальшій документації також зазначено, що returnType та returnDescription є необов'язковими параметрами.

returnType - Необов'язково: тип значення, що повертається.

returnDescription - Необов’язково: будь-який додатковий опис.

Джерело: https://code.google.com/p/jsdoc-toolkit/wiki/TagReturns

Резюме

Ви можете залишити анотацію повернення або включити її без будь-яких параметрів.


10
Ця відповідь насправді краща за прийняту. Якщо ваша функція не повертає результат, не слід говорити, що вона повертається, undefinedоскільки це вже неявно в Javascript і може спричинити плутанину у тих, хто читає ваші документи.
Lucio Paiva

2
Ні, я не погоджуюсь і кажу, що це не дуже гарна ідея. Коли чогось не вистачає, ви не знаєте, було це навмисно чи ні. Визначившись із типом повернення, навіть коли undefinedви змушуєте себе заявити про свій намір, це також добре, коли читаєте його пізніше. Тільки для уточнення, я не кажу, що слід включати марну заяву JS, я кажу, що завжди слід включати @returnsзаяву JSDoc (я проти марного коду, але не проти "марних" коментарів).
Мерре

IMO має сенс вказати тип повернення undefined, якщо можливо, що ваша функція або метод повертає будь-яке інше значення, і в цьому випадку ви отримуєте щось подібне:@returns {Array|undefined} - returns array if operation successful, otherwise returns undefined
GrayedFox

19

Переглядаючи документи ESlint, якими вони користуються @returns {void}

Джерело: http://eslint.org/docs/rules/valid-jsdoc

Оскільки мені потрібно надати @returnsдля кожної функції проходження тестів, щоб підштовхнути код для певних проектів, це потрібно в моєму випадку.


1

Якщо вам потрібно вголос сказати, що нічого не повертається, ви можете сказати це в описі у вільній формі . Це корисно для роз'яснення ситуацій, коли користувач може очікувати, що щось буде повернуто. Звичайно, правильне іменування функції та параметрів повинно робити одне лише очевидним очікуваний тип повернення, але це може бути не завжди можливим.

/**
 * This is a funny function. Returns nothing.
 * @param {string} a joke.
 */
var funny = function (joke) {
  console.log(joke);
};
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.