Самый чистый способ удалить предупреждение - определить структуру JSON. Это можно сделать с помощью тега @type
:
/** @type {{MyProp1:string}} */
Где MyProp1
- это имя свойства, а string
- это тип.
Компилятор Google Closure переименует переменную. Если вы не хотите этого, вы должны использовать кавычки + скобки вместо точечной нотации:
MyObject['MyProp1']
Пример : вставить следующее в Закрывающий компилятор :
// ==ClosureCompiler==
// @compilation_level ADVANCED_OPTIMIZATIONS
// ==/ClosureCompiler==
var MyObject;
function x() { // Magic happens at the next line
/** @type {{MyProp1:string}}*/
MyObject = JSON.parse(prompt(''));
}
function afterX() {
var SomeVar = MyObject.MyProp1;
alert(SomeVar);
}
x();
afterX();
Выход:
var a;a=JSON.parse(prompt(""));alert(a.a);