如何正確轉換 typescript


#1

將下列程式碼加入 component.ts 粗體字為錯誤地方, 再麻煩先進教導

readfiles(files) {
for (var i = 0; i < files.length; i++) {
(document.getElementById(“fileDragName”)).value = files[i].name
(document.getElementById(“fileDragSize”)).value = files[i].size
(document.getElementById(“fileDragType”)).value = files[i].type
let reader = new FileReader();
reader.onload = function(event) {
(document.getElementById(“fileDragData”)).value = event.target.result;}
reader.readAsDataURL(files[i]);
}
}

holder = (document.getElementById(“holder”));
holder.ondragover = function () { this.className = ‘hover’; return false; };
holder.ondragend = function () { this.className = ‘’; return false; };
holder.ondrop = function (e) {
this.className = ‘’;
e.preventDefault();
this.readfiles(e.dataTransfer.files);
}


#2

先說明你的「正確」的定義是什麼?
如果沒有特別需求,就是設定成 any 就好。


#3

先進您好,
改成 :any一開始就試過但是始終無法

holder顯示錯誤的地方為 duplicate identifier “holder"


#4

那表示你應該有其他外部定義檔案定義了 holder 這個變數。
另外,也無法從你提供的程式碼片段中得知你的 holder 是在哪裡宣告的?宣告成什麼型別?


#5

holder = (document.getElementById(“holder”));

是這樣定義的, 沒有在外部定義


#6

變數應該要經過宣告才能使用,請養成良好習慣。
嘗試: const holder: any = document.getElementById(“holder”);


#7

有用 let & const 在 class 外部宣告過問題還是一樣


#8

去找哪個外部定義檔定義了 holder(請自行 google duplicate identifier 的錯誤原因,並理解

如果還是解決不了,那最少請用 stackblitz 或 codesandbox 重現你的錯誤,讓其他人有辦法幫你追蹤。


#9

好的感謝 .