Полагаю, вы имеете в виду предупреждения о типах, когда используете VERBOSE или checkTypes.
Поместите в любой файл следующее:
/**
* @fileoverview
* @suppress {checkTypes}
*/
чтобы отключить проверку типа только для этого файла . Вы можете @suppress
и многое другое. Прочитайте документацию по Closure Compiler для получения более подробной информации.
Опасное использование «этого» * 1011 *
Однако, если вы говорите об «опасном использовании этого» предупреждения, НЕ игнорируйте их. Они ссылаются на места, где:
У вас есть пространство имен
Вы определили функцию в этом пространстве имен
Вы используете «this» внутри этой функции - и это может относиться к пространству имен
Это пространство имен может быть сплющено компилятором
Например:
foo.bar.hello = "Hello World!";
foo.bar.baz = function() {
alert(this.hello);
};
foo.bar.baz(); // this --> foo.bar
Статус "alert" будет помечен предупреждением компилятора о "опасном использовании этого". Зачем? Помните, если компилятор выравнивает пространство имен "foo.bar":
$foo$bar$hello$ = "Hello World!";
$foo$bar$baz$ = function() { alert(this.$hello$); }
$foo$bar$baz$(); // this --> window
Обратите внимание, что я использую переименование переменных отладки здесь. В действительности, «$ foo $ bar $ baz» можно переименовать просто в «a».
Вы сразу можете увидеть, что вызов foo.bar.baz()
не удастся, потому что «this» больше не относится к «foo.bar», но относится к глобальному объекту. Ваш код вылетит с громким ЗАДВИЖКОМ!
Исключительные случаи, когда "это" в порядке
Теперь есть случаи, когда использование "this" в порядке. Например, в обработчиках событий. «this» автоматически указывает на узел DOM, вызвавший это событие.
В этих случаях вам необходимо использовать директиву JsDoc следующего типа:
/** @this {Node} */
, чтобы указать ожидаемый тип для this для закрытия компилятора.