2016-01-25 2 views
1

Рассмотрим типичную функцию EXTERN:Google Closure Compiler экстернов и Аргументы функции

var func = function(arg1, arg2) {}; 

Вопрос: При объявлении функции экстернов, как это, делает Google Closure Compiler все равно, если мы получим правильное количество аргументов? Например, мы могли бы заменить выше со следующим:

var func = function() {}; 

Как и в стороне, я пытался сделать мои экстерн без каких-либо аргументов, и ССАГПЗ, похоже, не волнует; Тем не менее, я просто убедился, что не буду сталкиваться с непредвиденной проблемой, связанной с этим.

ответ

1

Предполагается, что функция extern без аннотации принимает переменное количество аргументов любого типа и может возвращать любой тип. Как только добавляется одна аннотация, поведение изменяется, и компилятор будет предупреждать о количестве и типе аргументов.

/** @return {undefined} */ 
var func = function() {} ; 

Команда компилятора будет принимать только экстерны, которые полностью набраны из-за этого.

+0

Действительно, мы должны отказаться от этого поведения. Если вы хотите функцию проверки неттого типа, вы можете объявить: /** @type {! Function} */var func; – John

Смежные вопросы