闭包编译器警告来自外部的未定义属性
Closure compiler warns about undefined property from extern
闭包编译器警告一个属性没有在extern上定义,而据我所知该属性是在该extern上定义的。
我想让闭包编译器干净地编译这个,而不发出这个警告。
我为编译器使用以下选项:
- angular_pass
- compilation_level = ADVANCED_OPTIMIZATIONS
- create_source_map
- language_in = ECMASCRIPT5_STRICT
- manage_closure_dependencies
- warning_level =详细
产生的警告是:
trFilter.js:19: WARNING - Property instant never defined on pascalprecht.translate.$translate
target = $translate.instant(texts.toString());
^
产生警告的文件有以下内容:
var myApp = {};
/*
* The trFilter generates translated strings.
*/
(function () {
'use strict';
/**
* @param {pascalprecht.translate.$translate} $translate
* @returns {function((Array.<string>|string)): string}
*/
var trFilter = function ($translate) {
return function(texts) {
var target;
target = $translate.instant(texts.toString());
return target;
};
};
myApp.trFilter = ['$translate', trFilter];
})();
angular.module('myApp')
.filter('tr', myApp.trFilter);
我的external for angular-translate包含以下内容:
/**
* @fileoverview Externs for Angular Translate.
* @externs
*/
/**
* Base namespace
* @type {Object}
* @const
*/
var pascalprecht = {};
goog.provide('pascalprecht');
/**
* angular-translate namespace
* @type {Object}
* @const
*/
pascalprecht.translate = {};
goog.provide('pascalprecht.translate');
/**
* The $translate service
* @constructor
*/
pascalprecht.translate.$translate;
goog.provide('pascalprecht.translate.$translate');
/**
* Returns a translation instantly from the internal state of loaded translation. All rules
* regarding the current language, the preferred language of even fallback languages will be
* used except any promise handling. If a language was not found, an asynchronous loading
* will be invoked in the background.
*
* @param {string} translationId Translation ID
* @param {Object=} interpolateParams Params
* @param {string=} interpolationId
*
* @return {string} translation
*/
pascalprecht.translate.$translate.instant = function (translationId, interpolateParams, interpolationId) {};
goog.exportProperty(pascalprecht.translate.$translate, 'instant', pascalprecht.translate.$translate.instant);
我不认为在外部文件中需要使用goog. provider()和goog.exportProperty()调用。我已经在文件中测试了有和没有它们,但它们似乎没有任何区别。
我正在使用grunt- close -compiler grunt helper运行闭包。
更改为warning_level=QUIET确实消除了警告,但它也消除了关于可能成为问题的事情的警告。例如,如果我将调用更改为:
target = $translate.instatn(texts.toString(());
我希望得到一个警告,因为在$translate对象上没有inst史坦()函数。
在这种情况下,我需要改变什么来获得闭包编译器以找到正确的外部函数?
我试试这个:
/**
* The $translate service
* @type {Object}
* @constructor
*/
pascalprecht.translate.$translate;
goog.provide('pascalprecht.translate.$translate');
(放@type {Object})。
"WARNING - Property instant从未定义pascalprecht.translate。美元翻译"
相关文章:
- 将对象作为参数传递后的未定义属性
- 检查链接对象形式中未定义属性的最佳实践是什么
- PhantomJS中的evalute内部未定义属性
- 访问数字类型的未定义属性
- 如何处理未定义属性的未定义属性 javascript 类型错误
- 返回未定义属性的脚本
- 类型错误:无法读取 ng-repeat 的未定义属性
- JavaScript-Disqus如何处理其“;disqus_config”;包含未定义属性的函数
- 是对HTMLElement#样式的未定义属性的赋值的返回值,保证与赋值相同
- 最好检查未定义属性或设置为空
- 如何解决这个未定义属性的node.js错误?
- 如何在JavaScript中挽救对象的未定义属性?
- AngularJS和PHP -注意:未定义属性:stdClass
- 主干模型删除未定义属性
- if else子句中未定义对象的未定义属性
- Javascript数组问题:无法读取未定义属性
- 当尝试使用未定义属性进行筛选时,Lodash将排除项
- 在Javascript数组的中途未定义属性
- Knockout arrayForEach未定义属性
- javascript中未定义属性的简写,初始化和赋值属性