Typescript: Kelas 'x' digunakan sebelum deklarasinya

Dibuat pada 11 Agu 2017  ·  4Komentar  ·  Sumber: microsoft/TypeScript

##

TypeScript Version: 2.4.1
Versi Visual Studio: 14.0.25420.01 Update 3

File: ParallelogramF.ts
namespace JMath { export class ParallelogramF extends Polygon { ... } }
File: Polygon.ts
namespace JMath { export class Polygon { } }

Perilaku yang diharapkan:
Class Polygon harus diketahui dengan benar.

Perilaku sebenarnya:
Terjadi Kesalahan: Polygon Kelas digunakan sebelum deklarasinya.

Ini terjadi hanya ketika kotak centang 'Gabungkan keluaran JavaScript ke dalam file' di properti proyek dicentang dan beberapa nama file 'xxx.js' ditentukan di depannya.

Larutan:
1- Ketika saya mengubah nama file "ParallelogramF.ts" menjadi "ZParallelogramF.ts" masalah terpecahkan dan terkompilasi dengan benar !!!!
2- Ketika saya menghapus centang 'Gabungkan output JavaScript ke dalam file' kotak centang itu terkompilasi dengan benar !!!!

Mengubah tempat 'TypeScriptCompile Include = "ParallelogramF.ts"' dalam file ".csproj" dari proyek ke item terakhir di dalam tag induknya tidak membantu.

Question

Komentar yang paling membantu

@arashebrahimi Coba tambahkan
/// <reference path="Polygon.ts"/>
ke bagian paling atas file ParallelogramF.ts Anda

Mungkin ada cara yang "lebih baru" untuk melakukan itu, tetapi itu memberi tahu kompilator untuk mengkompilasi Polygon.ts sebelum ParallelogramF.ts saat mengompilasi menjadi satu file

Semua 4 komentar

Anda akan mencatat bahwa dalam kasus di mana Anda mendapatkan kesalahan, kode yang dikompilasi tidak akan berjalan.

Terimakasih atas responnya,

Saya tidak dapat menemukan hubungan antara masalah ini dan tanggapan Anda? !!!
Jelas bahwa ketika ada kesalahan, kode yang telah dikompilasi tidak akan berjalan !!!!!!!!!

Tapi saya berbicara tentang 'kesalahan' yang salah ketika saya mengkompilasi !!!!
Dimana saya berbicara tentang 'lari' ???

Saya mengatakan ada bug ketika saya mengkompilasi, Ini harus dikompilasi tanpa kesalahan, tetapi saya mendapatkan kesalahan 'salah' !!!!

@arashebrahimi Coba tambahkan
/// <reference path="Polygon.ts"/>
ke bagian paling atas file ParallelogramF.ts Anda

Mungkin ada cara yang "lebih baru" untuk melakukan itu, tetapi itu memberi tahu kompilator untuk mengkompilasi Polygon.ts sebelum ParallelogramF.ts saat mengompilasi menjadi satu file

Saya tidak mengerti bagaimana ini adalah perilaku yang diharapkan. Masalahnya adalah bahwa kelas anak tidak dikenali dalam namespace yang sama - yang seharusnya, secara teori, menghilangkan kebutuhan untuk memanggil referensi secara eksplisit. Kompilator harus _know_ untuk mengkompilasi kelas dasar sebelum setiap dan semua kelas anak.

Apa yang saya percaya @arashebrahimi nyatakan adalah bahwa ini tampaknya menjadi masalah alfabetisasi di mana kelas anak yang datang setelah kelas dasar (dalam nama file) secara alfabet mengenali hubungan warisan, tetapi yang datang sebelumnya tidak. Namun, saya menemukan bahwa masalah ini tidak ada untuk antarmuka.

Saya dapat mereproduksi masalah ini dengan TS 2.5.3 dalam Visual Studio Versi 15.4.5.

Apakah halaman ini membantu?
0 / 5 - 0 peringkat

Masalah terkait

MartynasZilinskas picture MartynasZilinskas  ·  3Komentar

dlaberge picture dlaberge  ·  3Komentar

fwanicka picture fwanicka  ·  3Komentar

blendsdk picture blendsdk  ·  3Komentar

zhuravlikjb picture zhuravlikjb  ·  3Komentar