我正在使用使用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。 –