Почему компилятор Closure переименовывает свойства внешнего типа?

Я помещаю это во внешний файл:

/** @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' и т. д. Как это остановить? Почему он думает, что может переименовать что-то, что является "extern".

Роб

Дополнительный вопрос

Ответ Джона привел к другому вопросу: Могу ли я сказать компилятору Closure прекратить переименование свойств только для определенных типов?

12
задан Community 23 May 2017 в 12:23
поделиться