如何在google-closure界面中注释@attributes

时间:2016-03-01 13:55:05

标签: javascript json google-closure-compiler jsdoc

如何在google关闭中注释JSON响应的界面?

我必须使用JSONP接口,它实际上将一些XML转换为JSON并将其作为参数提供给我的回调。但不幸的是,原始XML包含一些属性,所以我得到一个带有@ attributes-fields的JSON-Object,例如

{
  "output": {
    "foo": "bar"
  },
  "@attributes": {
    "baz": "attr"
  }
}

我创建了一个google-closure界面,因此编译器不会意外地缩小我的字段,我在IDE中获得了整洁的自动编译。

/**
 * @interface
 */
var JsonResult = function() {};

/**
 * @type {JsonResultOutput}
 */
JsonResult.prototype.output;

/**
 * @type {JsonResultAttributes}
 */
JsonResult.prototype['@attributes'];

/**
 * @interface
 */
var JsonResultOutput = function() {};

/**
 * @type {string}
 */
JsonResultOutput.prototype.foo;

/**
 * @interface
 */
var JsonResultAttributes = function() {};

/**
 * @type {string}
 */
JsonResultAttributes.prototype.baz;

不幸的是,如果我尝试注释括号和字符串中的字段,编译器会发出警告。所以现在我的问题是:我应该如何注释这个以删除警告?也许我可以在界面中删除这个字段,因为我必须在代码中以相同的方式编写这个字段的问题,所以编译器永远不会缩小这个字段。但我也想在其完整结构中记录对象。

1 个答案:

答案 0 :(得分:0)

对我来说这看起来像个错误。请随意在https://github.com/google/closure-compiler

提交问题

要获得解决方法,您必须使用对象文字键:

JsonResult.prototype = {
  /**
   * @type {JsonResultAttributes}
   */
  '@attributes': {} 
};