[英]Closure compiler Advanced Optimization prevent object property renaming
假設以下代碼。
1)在ClosureTestClass構造函數中,我們從外部系統傳遞了一個對象。 如果在此代碼中將inputObjectFromExternalSystem的property1重命名,則從外部系統發送的對象將沒有重命名的屬性。 有沒有一種方法可以指定編譯器不重命名特定對象的屬性。
我知道我們可以通過使用
inputObjectFromExternalSystem['property1'].
我在/ ** @expose * /之類的注釋中尋找內容。 我嘗試了/ ** @lends * /,但是沒有用。
// ==ClosureCompiler==
// @compilation_level ADVANCED_OPTIMIZATIONS
// @output_file_name default.js
// @formatting pretty_print
// @use_closure_library true
// ==/ClosureCompiler==
/** @export */
var ClosureTestClass = (function () {
function ClosureTestClass(inputObjectFromExternalSystem) {
this.property1 = inputObjectFromExternalSystem.property1;
this.property2 = inputObjectFromExternalSystem.property2;
}
/** @expose */
ClosureTestClass.prototype.printProperty = function () {
console.log(this.property1);
console.log(this.property2);
};
return ClosureTestClass;
})();
/** @export */
var ClosureTestClassUse = (function () {
function ClosureTestClassUse () {
this.closureTest = new ClosureTestClass;
}
/** @expose */
ClosureTestClassUse.prototype.print = function () {
console.log(this.closureTest);
};
return ClosureTestClassUse;
})();
var a = new ClosureTestClassUse();
2)/ ** @lends * /的用例是什么
@export
旨在防止重命名-並且是完成此操作的唯一受支持的注釋。 您還必須使用--generate_exports
標志,並且源代碼必須包含Closure-library中的base.js
文件,或者必須包含用於定義具有相同方法簽名的goog.exportSymbol
和goog.exportProperty
定義。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.