Hai yang disana,
Apakah mungkin untuk menulis modul eksternal (commonjs) "A", kemudian dalam kode "B" modul lain, mendeklarasikan variabel sebagai jenis modul "A" tanpa menggunakan impor yang akhirnya memerlukan modul "A".
Alasan saya ingin melakukan ini adalah bahwa saya akan meneruskan referensi ke modul "A" ke konstruktor kelas di modul lain "B", karena saya ingin modul "A" menjadi tunggal. Tetapi saya ingin mengetik argumen dalam konstruktor dengan yang ada di modul "A", seolah-olah modul "A" telah diimpor menggunakan import A = require ("A");
Alasan saya menginginkan modul tunggal adalah karena modul ini mungkin berisi instance kelas yang mengelola koneksi database, dll, dan saya tidak benar-benar ingin mereka menginisialisasi ulang setiap kali saya harus mengimpor; Saya ingin bisa menyebarkannya daripada mengandalkan potensi sihir "cache modul-node".
Apakah ada cara untuk melakukan ini? Saya telah memikirkan cara lain untuk mencapai keinginan yang saya inginkan, tetapi ini terasa paling sederhana, jika memungkinkan.
Impor modul dihilangkan jika tidak digunakan dalam posisi nilai. jadi jika impor modul A
hanya digunakan dalam posisi tipe, panggilan require
tidak akan ditulis.
contohnya:
// B.ts
import s = require("./A");
var x: typeof s;
memancarkan
var x;
apakah ini menjawab pertanyaan Anda?
Oh itu bagus! Ini pasti menjawab pertanyaan saya. Saya tidak dapat menemukan ini di dokumentasi, jadi terima kasih banyak atas bantuan Anda. :)
Hai teman-teman,
Saya punya pertanyaan yang sejalan. Saya mencoba solusi di atas tetapi sekarang berhasil untuk saya.
Saya mengimpor kelas dari induk modul webpack impor {A, B} dari "induk";
Saya hanya ingin memanggil konstruktor untuk kelas-kelas ini. Saya mencoba const a = A ({data: 1}); Ini tidak memberikan kesalahan TS pada kompilasi. Tapi itu rusak pada javascript runtime mengatakan, Jenis kesalahan A bukan konstruktor.
Apakah saya perlu membuat tipe kustom dan menambahkannya di devDependancies? Atau apakah ada cara khusus untuk mengekspor modul "induk" saya seperti ekspor default.
Setiap bantuan dihargai.
Bersulang,
Sudeep
Komentar yang paling membantu
Impor modul dihilangkan jika tidak digunakan dalam posisi nilai. jadi jika impor modul
A
hanya digunakan dalam posisi tipe, panggilanrequire
tidak akan ditulis.contohnya:
memancarkan
apakah ini menjawab pertanyaan Anda?