为什么闭包编译器要重命名外部类型的属性?
我把它放在一个 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”等。你如何阻止它?为什么它认为它可以重命名“外部”的东西。
Rob
后续问题
John 的回答引出了另一个问题: 我可以告诉闭包编译器仅针对特定类型停止重命名属性吗?
I put this in an externs file:
/** @typedef {{english: string, spanish: string}} */
var SpanishNoun;
Then I have javascript:
/**
* @param {SpanishNoun} n
*/
exp1.processData3 = function (n) {
console.log("pd3:", n.english, n.spanish, n['english'], n['spanish']);
}
Which compiles to:
function(a){console.log("pd3:",a.a,a.c,a.english,a.spanish)};
So it still renamed 'english' to 'a', etc. How do you stop that? Why does it think it can rename something that is "extern".
Rob
Follow-up Question
John's answer led to another question: Can I tell the Closure compiler to, for specific types only, stop renaming properties?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
typedef 不参与重命名计算
此类型定义将:
typedefs don't participate in the renaming calculation
This type definition will: