【发布时间】:2016-08-15 00:00:18
【问题描述】:
下面是我传递给 Google Closure Compiler 的一些代码的非常简化的版本:
"use strict";
var xhr = new XMLHttpRequest();
xhr.open("GET", "somefile", true);
xhr.responseType = "arraybuffer";
xhr.addEventListener(
'load',
function() {
var data = new Uint8Array(xhr.response);
/* ... do something ... */
}
);
这基本上是一个用于检索原始二进制数据的 Ajax 查询,它按预期工作。
但是,编译器会发出以下警告:
WARNING - actual parameter 1 of Uint8Array does not match formal parameter
found : *
required: (Array<number>|ArrayBuffer|ArrayBufferView|null|number)
var data = new Uint8Array(xhr.response);
^
我花了一些时间尝试使用 JSDoc 指令修复它,以便将“xhr.response”的类型明确定义为“ArrayBuffer”。
例如:
/** @property {ArrayBuffer} response */
var xhr = new XMLHttpRequest();
但没有任何效果。
DID 最终起作用的是将变量声明与其初始化分开,而不添加任何 JSDoc 指令:
var xhr;
xhr = new XMLHttpRequest();
没有警告了。
问题是我不明白。为什么它可以解决问题?这样做真的正确吗?
【问题讨论】:
标签: javascript xmlhttprequest google-closure-compiler jsdoc