我正在使用使用return语句来公开类方法的设计模式。Google Closure编译器,如何优雅地处理JSC_INEXISTENT_PROPERTY?
问题是:我得到一个很多JSC_INEXISTENT_PROPERTY
警告在关闭编译器的高级模式,这使得它很难检查实际问题的警告。该图案的
实施例I使用:
// ==ClosureCompiler==
// @compilation_level ADVANCED_OPTIMIZATIONS
// ==/ClosureCompiler==
/**
* @constructor
*/
var MyClass = function() {
var someFunc = function(myString) {
console.log(myString);
}
return {
myPublicFunc: someFunc
};
}
var myClassInstance = new MyClass();
myClassInstance.myPublicFunc('Hello World');
警告:
JSC_INEXISTENT_PROPERTY: Property myPublicFunc never defined on MyClass \
at line 16 character 0
myClassInstance.myPublicFunc('Hello World');
输出(格式化):
(new function() {
return {
a: function(a) {
console.log(a)
}
}
}).a("Hello World");
哪个是奇怪的,因为封闭理解的代码是什么正确编写代码,将myPublicFunc
重命名为a
。那么为什么我得到这个警告?难道我做错了什么?
注:我不想关闭这些警告,因为它也会隐藏我真正关心的警告。我也不想使用带引号的字符串或导出,因为我希望Closure压缩这些。
当我测试它时,将新注释与记录类型一起使用会生成“错误类型注释”错误。 –
这是不幸的,我们应该修复它。 – John
它使用typedef。 –