バイナリファイルをダウンロードするための次のようなコードがあります。私の目標は、ArrayBufferを認識していない可能性のある古いブラウザーをサポートしながら、base64データURIに変換することです。今のところ、コードは十分に機能しているようです。
function download (url) {
'use strict';
var xhr = new XMLHttpRequest();
xhr.open('GET', url, true);
xhr.responseType = 'arraybuffer';
xhr.onreadystatechange = function () {
if (xhr.readyState === 4 && xhr.status === 200) {
var mime = xhr.getResponseHeader('Content-Type');
var base64;
if (oldIE) {
var rawBytes = ieConvert(xhr.responseBody);
base64 = encodeString64(rawBytes);
} else if (xhr.response instanceof ArrayBuffer) {
var payload = new Uint8Array(xhr.response);
for (var i = 0, buffer = ''; i < payload.length; i++) {
buffer += String.fromCharCode(payload[i]);
}
base64 = window.btoa(buffer);
} else if (xhr.response instanceof String) {
base64 = encodeString64(xhr.response);
}
return 'data:' + mime + ';base64,' + base64;
} else if (xhr.readyState === 4) {
throw "Failed.";
}
};
xhr.send();
}
私の問題は、GoogleClosureCompilerを使用するとタイプ警告が表示されることです。明らかに、これは私が使用instanceof String
したinstanceof string
ためですが、オブジェクト名を大文字にする必要があるため、機能しません。
WARNING - actual parameter 1 of encodeString64 does not match formal parameter
found : String
required: string
base64 = encodeString64(xhr.response);
^
0 error(s), 1 warning(s), 85.22012578616352 typed
この警告を取り除く方法はありますか?