Saya memiliki kode berikut untuk menangani unggahan file pengguna:

17  const onFileDrop =
18    (files: File[]) => {
19      files.forEach(file => file.text().then(content => console.log(content)));
20    },
21  );

Kode VS tidak menunjukkan kesalahan apa pun dan saya dapat mengakses antarmuka File dengan benar, yang berisi fungsi text().

enter image description here enter image description here

Namun, saat menjalankan npm start saya melihat kesalahan berikut:

[tsl] ERROR in {omitted}/RawCommandOutputs.tsx(19,34)
      TS2339: Property 'text' does not exist on type 'File'.


[tsl] ERROR in {omitted}/RawCommandOutputs.tsx(19,46)
      TS7006: Parameter 'content' implicitly has an 'any' type.
3
Ares 18 Juni 2020, 03:05

1 menjawab

Jawaban Terbaik

Perbedaan perilaku ini disebabkan oleh perbedaan versi TypeScript yang digunakan oleh webpack dan VS Code.

Proyek ini memiliki ketergantungan pada TypeScript versi 3.5.2. Dalam versi ini, antarmuka File tidak berisi fungsi text(). Oleh karena itu, menjalankan npm start menunjukkan kesalahan yang disebutkan di atas.

Kode VS tampaknya menggunakan versi terbaru dari TypeScript secara default (3.9.5 dalam kasus saya), yang berisi antarmuka File yang diperbarui.

Untuk membuat VS Code menggunakan versi TypeScript yang sama dengan proyek saya, saya menambahkan
"typescript.tsdk": "./node_modules/typescript/lib" ke file settings.json saya. Kemudian, saya menjalankan perintah Select Typescript Version dan memilih opsi Use Workspace Version.

1
Ares 22 Juni 2020, 02:58