1
我想离开'jQuery universe'并使用更多的vanilla JS。不仅仅是为了增添趣味,我还决定使用Typescript来增加优势;但这里是问题:TypeScript - FormData循环遍历元素(使用getAll()或entries())
在我发送发布请求之前,我需要循环遍历元素。如果没有打字稿我可能会使用的东西,像formDataElement.entries()
(或只是为了检查1元formDataElement.getAll('keyForMyFirstEntry')
。
但PhpStorm和编译器告诉我,有没有像“GETALL”或属性“项”
V2A-16:area51 v2a$ tsc --out public/js/d3-fileupload.vanilla.js module/Application/assets/ts/d3-vanilla-fileupload.ts
module/Application/assets/ts/d3-vanilla-fileupload.ts(274,12): error TS2339: Property 'getAll' does not exist on type 'FormData'.
V2A-16:area51 v2a$ tsc --out public/js/d3-fileupload.vanilla.js module/Application/assets/ts/d3-vanilla-fileupload.ts
module/Application/assets/ts/d3-vanilla-fileupload.ts(274,36): error TS2339: Property 'entries' does not exist on type 'FormData'.
因此,这里是我的问题:
- 为什么打字稿仅支持在他的书房(lib.d.ts)追加,还是有一个较新的版本
- 我怎么能圈通过所有元素来编写,J他们重新给我POST请求
代码:
function FileSelectHandler($event) {
let $files = $event.target.files || $event.dataTransfer.files;
let $targetName = $event.target.getAttribute('data-related-element');
let $relatedElement = document.querySelectorAll('[name="' + $targetName + '"]');
let $uri = $relatedElement[0].getAttribute('data-upload-uri');
let $xhr = new ajax();
if ($files) {
[].forEach.call(
$files,
function ($file) {
$data.append('file[]', $file);
}
);
}
$xhr.post(
$uri,
$data
);
}
class ajax {
[...]
public post(
$url: string,
$data: FormData,
$callback: (text: any) => any = function() {},
$async: any = true
) {
let $query = [];
if ($data !== undefined) {
/*
* Please Help... doesn't work
*/
for (let $key in $data.entries()) {
$query.push(encodeURIComponent($key) + '=' + encodeURIComponent($data[$key]));
}
}
this.send($url, $callback, 'POST', $query.join('&'), $async)
}
}