我把它放在一个外部文件中:
/** @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/