Saya menggunakan naskah 1.6 dengan sintaks modul es6.
File saya adalah:
test.ts:
module App {
export class SomeClass {
getName(): string {
return 'name';
}
}
}
main.ts:
import App from './test';
var a = new App.SomeClass();
Ketika saya mencoba untuk mengkompilasi main.ts
file saya mendapatkan kesalahan ini:
Kesalahan TS2306: File 'test.ts' bukan modul.
Bagaimana saya bisa mencapai itu?
javascript
typescript
ecmascript-6
Bazinga
sumber
sumber
Jawaban:
Extended - untuk memberikan rincian lebih lanjut berdasarkan beberapa komentar
Kesalahannya
Berasal dari fakta yang dijelaskan di sini http://exploringjs.com/es6/ch_modules.html
Berdasarkan hal di atas kita perlu
export
, sebagai bagian dari file test.js. Mari sesuaikan kontennya seperti ini:Dan sekarang kita dapat mengimpornya dengan tiga cara berikut:
Dan kita dapat mengkonsumsi barang impor seperti ini:
dan panggil metode untuk melihatnya beraksi:
Bagian asli berusaha membantu mengurangi jumlah kompleksitas dalam penggunaan namespace
Bagian asli:
Saya akan sangat menyarankan untuk memeriksa T & J ini:
Bagaimana cara menggunakan ruang nama dengan modul eksternal TypeScript?
Biarkan saya mengutip kalimat pertama:
Dalam hal ini, kita tidak perlu
module
masuktest.ts
. Ini bisa jadi konten yang disesuaikantest.ts
:Baca lebih lanjut di sini
Ekspor =
nanti kita bisa mengkonsumsinya seperti ini:
Baca lebih lanjut di sini:
Modul Pemuatan Opsional dan Skenario Pemuatan Lanjutan Lainnya
sumber
Jawaban di atas benar. Tapi kalau-kalau ... Mendapat kesalahan yang sama dalam Kode VS. Harus menyimpan kembali / mengkompilasi ulang file yang sedang melempar kesalahan.
sumber
Bagaimana saya bisa mencapai itu?
Contoh Anda mendeklarasikan modul internal TypeScript <1.5 , yang sekarang disebut namespace .
module App {}
Sintaksis lama sekarang setara dengannamespace App {}
. Akibatnya, berikut ini berfungsi:Yang telah dibilang...
Cobalah untuk menghindari mengekspor ruang nama dan bukannya mengekspor modul (yang sebelumnya disebut modul eksternal ). Jika perlu, Anda dapat menggunakan namespace saat impor dengan pola impor namespace seperti ini:
sumber
Selain jawaban A. Tim ada kalanya bahkan itu tidak berhasil, jadi Anda perlu:
sumber
export class... {
, yang sudutnya tidak suka, memberi saya masalah ini. Setelah memperbaiki format, kompilasi tanpa masalah.Selain jawaban Tim, masalah ini terjadi pada saya ketika saya sedang membagi file refactoring, membaginya menjadi file mereka sendiri.
VSCode, untuk beberapa alasan, menjorok bagian dari kode [class] saya, yang menyebabkan masalah ini. Ini sulit untuk diketahui pada awalnya, tetapi setelah saya menyadari kode itu indentasi, saya memformat kode dan masalah itu hilang.
misalnya, segala sesuatu setelah baris pertama definisi Kelas diindentasi secara otomatis selama menempel.
sumber