Где бы я использовал аннотации функций с закрытием Google?

Компилятор Closure может использовать информацию о типах данных о переменных JavaScript для обеспечения расширенной оптимизации и предупреждений.

Я просматривал их выражения типов и вижу несколько списков для типов функций. Пример:

{function(string, boolean)}
A function that takes two parameters (a string and a boolean), and has an unknown return value.

Другой пример:

{function(new:goog.ui.Menu, string)}
A function that takes one parameter (a string), and creates a new instance of goog.ui.Menu when called with the 'new' keyword.

Может ли кто-нибудь сказать мне, где я буду использовать эти аннотации, и привести пример того, как это будет выглядеть на практике? Являются ли они в первую очередь для @param и @return для функций, которые принимают функции в качестве параметров или возвращают функции?


person Ben Flynn    schedule 17.12.2011    source источник


Ответы (1)


В любом месте, где вы бы использовали типы:

  • объявления переменных
  • типы параметров
  • возвращаемые типы
  • слепки

Как правило, Closure Library — хорошее место для поиска примеров:

http://code.google.com/p/closure-library/source/browse/trunk/closure/goog/base.js

Но вот несколько образцов:

Нормальная функция:

/** 
 * @param {string} a 
 * @return {string}
 */
function f(a) {
  return a;
}

Функция, принимающая общую функцию:

/** 
 * @param {Function} a 
 * @return {void}
 */
function f(a) {
}

Функция, принимающая функцию с одним параметром, который должен быть строкой, и возвращающая строку:

/** 
 * @param {function(string):string} a 
 * @return {void}
 */
function f(a) {
}
person John    schedule 18.12.2011
comment
Спасибо за это, я думал, что это также необходимо или для использования при комментировании самих функций. - person Ash Clarke; 30.04.2012