簡體   English   中英

為什么Closure編譯器重命名extern類型的屬性?

[英]Why does Closure compiler rename properties of an extern type?

我把它放在externs文件中:

/** @typedef {{english: string, spanish: string}} */
var SpanishNoun;

然后我有javascript:

/**
 * @param {SpanishNoun} n 
 */
exp1.processData3 = function (n) {
    console.log("pd3:", n.english, n.spanish, n['english'], n['spanish']);
}

編譯為:

function(a){console.log("pd3:",a.a,a.c,a.english,a.spanish)};

所以它仍然將'english'重命名為'a'等等。你如何阻止它? 為什么它認為它可以重命名“外部”的東西。

后續問題

John的回答引出了另一個問題: 我可以告訴Closure編譯器,僅針對特定類型,停止重命名屬性嗎?

typedef不參與重命名計算

此類型定義將:

/** @interface */
function SpanishNoun() {}
/** @type {string} */
SpanishNoun.prototype.english;
/** @type {string} */
SpanishNoun.prototype.spanish;

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM