javascript - 为什么 Closure 编译器重命名 extern 类型的属性?

标签 javascript google-closure-compiler

我把它放在一个外部文件中:

/** @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 的回答引出了另一个问题:Can I tell the Closure compiler to, for specific types only, stop renaming properties?

最佳答案

typedef 不参与重命名计算

此类型定义将:

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

关于javascript - 为什么 Closure 编译器重命名 extern 类型的属性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8196243/

相关文章:

javascript - Codeigniter 从数据库自动完成

javascript - 可以通过控制台为 div 设置动画,但不能通过 JS 文件设置

javascript - 闭包编译器 : size increases because of many $jscomp statements in output file

google-closure-compiler - 隐藏 Google 图书馆的警告

javascript - 3 字节宽的 UTF-8 字符如何只能使用单个 UTF-16 代码单元?

javascript - 将字幕加载到 Netflix 播放器

javascript - 对话框关闭后从 DOM 中删除 SweetAlert2

javascript - 谷歌关闭优化

javascript - 是否有 HTML/CSS 的编译器?

java - 闭包编译器选项