Saya telah mendefinisikan ini di file .html saya:
<script type="text/javascript" src="bower_components/tree.js/tree.min.js"></script>
<script type="text/javascript" src="bower_components/q/q.js"></script>
<script type="text/javascript" src="test.js"></script>
Kemudian di test.js:
var myTree = Tree.tree({})
Tapi kesalahan Ketikan keluar mengatakan: "Tidak dapat menemukan nama 'Pohon'"
Saya juga mencoba mengompilasi --module amd
dan menempatkan import Tree = require("model/tree");
di bagian atas file test.js, tetapi kesalahannya muncul lagi: Cannot find external module 'model/tree'.
betapapun jelasnya itu harus merupakan impor yang valid, lihat di sini di mana ia didefinisikan: https://github.com/marmelab/tree .js / blob / master / src / main.js
Saya tidak ingin menulis file .d.ts untuk setiap file javascript eksternal yang ingin saya gunakan, apakah itu yang ingin saya lakukan dengan Typecript?
requirejs
typescript
Blub
sumber
sumber
Jawaban:
Tidak. Solusi paling sederhana / tercepat adalah dengan mengatakan bahwa ada beberapa variabel di
Tree
luar sana. Ini sesederhana:TypeSafety adalah skala geser di TypeScript. Dalam hal ini Anda hanya memberi tahu kompiler bahwa ada sesuatu yang disebut
Tree
yang akan Anda kelola dan tidak peduli dengan banyak jenis keamanan selain fakta bahwa keamanan itu ada di sana .Lebih
IMHO: Garis
declare var Tree:any;
ini jauh lebih sederhana sintaksnya daripada alat veficiation JS lain yang akan Anda tulis untuk menyatakan penggunaan variabel yang tidak ada dalam kode Anda.Memperbarui
sumber
Anda dapat menentukan sendiri 'memerlukan' dan menggunakan fitur ketergantungan amd tak berdokumen dari TypeScript:
Direktif 'amd-dependency' akan memberi tahu compiler untuk memasukkan modul Anda ke argumen "define" dalam kode yang dihasilkan: lihat contoh di sini .
Anda juga dapat memeriksa artikel yang sangat bagus yang menjelaskan cara menggunakan TypeScript dengan RequireJS.
Tetapi perhatikan bahwa tanpa menulis definisi TypeScript yang tepat untuk kode yang ada, Anda tidak akan diberikan informasi jenis apa pun, sehingga Anda tidak akan mendapatkan pemeriksaan keamanan jenis, penyelesaian kode tingkat lanjut dalam alat, dan sebagainya. Jadi, 'Pohon' Anda sebenarnya bertipe 'any', dan sebenarnya akan menjadi bagian JS dinamis di dalam kode TS lainnya.
sumber