##
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.
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.
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