Где бы я использовал аннотации функций с закрытием Google? - PullRequest
1 голос
/ 18 декабря 2011

Компилятор 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 для функций, которые принимают функции в качестве параметров или возвращают функции?

1 Ответ

3 голосов
/ 18 декабря 2011

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

  • объявления var
  • типы параметров
  • типы возврата
  • 1010 * бросает *

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

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) {
}
...