TypeScript Özelliği 'forEach', 'FileList' türünde mevcut değil
Kullanıcıların birden fazla dosya yüklemesine izin veriyorum. Sonra bu dosyaların üzerinde tekrarlama yapmam ve bazı işlemler gerçekleştirmem gerekiyor. FileList'e bazı ekstra işlevler eklemek istedim ama TS FileList dizilerinde forEach'i bilmiyor. İşte benim kodum:
public uploadMultiple(evt){
console.log(evt.files);
FileList.prototype.forEach = function(callback) {[].forEach.call(this, callback)};
}
Cevap #1
FileList dizi ile karıştırılmamalıdır. Liste, length ve item gibi diğer özelliklere sahip bir yineleyicidir.
Olası bir çözüm, bence bunu yapmanın en iyi yolu olan bir for döngüsü kullanmak olurdu.
for (let i = 0; i < files.length; ++i) {
const file = files[i];
...
}
https://developer.mozilla.org/en-US/docs/Web/API/FileList
Cevap #2
FileList arayüzüne ekstra fonksiyonları atamadan önce bildirmeniz gerekir. Bunu bildirim birleştirme (declaration merging) kullanarak yapabilirsiniz. Bir modül sistemi kullanıyorsanız, birleştirilmiş arayüz global içinde bildirilmelidir:
declare global {
interface FileList {
forEach(callback: (f: File) => void) : void;
}
}
FileList.prototype.forEach = function(callback) { ... };
