Saya merasa ingin tahu tentang *.d.ts
karena saya seorang pemula di TypeScript. Dan saya diberitahu oleh seseorang bahwa jenis file ini adalah sesuatu seperti "file kepala" di C ++ tetapi untuk JS saja. Tapi saya tidak bisa mengonversi file JS murni ke *.d.ts
file kecuali saya dengan paksa mengubah *.js
ke *.ts
. Jadi saya punya tiga file: file JS, file TS dan *.d.ts
file.
Apa hubungan mereka?
Bagaimana saya bisa menggunakan
*.d.ts
file? Apakah ini berarti saya dapat menghapus*.ts
file secara permanen?Jika demikian, bagaimana
*.d.ts
file tersebut dapat mengetahui file JS mana yang dipetakan untuk dirinya sendiri?
Akan sangat baik jika seseorang bisa memberi saya contoh.
typescript
.d.ts
iliketocode
sumber
sumber
Jawaban:
File "d.ts" digunakan untuk memberikan informasi jenis naskah tentang API yang ditulis dalam JavaScript. Idenya adalah bahwa Anda menggunakan sesuatu seperti jQuery atau garis bawah, pustaka javascript yang ada. Anda ingin menggunakannya dari kode skrip Anda.
Daripada menulis ulang jquery atau garis bawah atau apa pun dalam naskah, Anda dapat menulis file d.ts, yang hanya berisi anotasi jenis. Kemudian dari kode skrip Anda, Anda mendapatkan manfaat skrip jenis pemeriksaan statis saat masih menggunakan perpustakaan JS murni.
sumber
d
singkatan File Deklarasi :sumber
typings
alat baris perintah tidak benar-benar diperlukan sejak TypeScript 2.0. Pendekatan yang lebih terkini adalah dengan menggunakan pembungkus pengetikan melalui repositori npm di bawah@types
namespace. Untuk perincian lebih lanjut lihat github.com/typings/typings/blob/master/README.mdSaya tidak bisa berkomentar dan karenanya menambahkan ini sebagai jawaban.
Kami mengalami kesulitan mencoba memetakan tipe yang ada ke perpustakaan javascript.
Untuk memetakan
.d.ts
file ke file javascript-nya, Anda perlu memberi nama.d.ts
file yang sama dengan file javascript, menyimpannya di folder yang sama, dan arahkan kode yang memerlukannya ke.d.ts
file tersebut.misal:
test.js
dantest.d.ts
berada ditestdir/
folder, maka Anda mengimpornya seperti ini di komponen reaksi:The
.d.ts
File diekspor sebagai namespace seperti ini:sumber
.d.ts
file tersebut juga harus dinamai sama dengan paket yang akan diimpor.Contoh yang berhasil untuk kasus tertentu :
Katakanlah Anda punya modul-saya yang Anda bagikan melalui npm .
Anda menginstalnya dengan
npm install my-module
Anda menggunakannya sebagai berikut:
Logika modul adalah semuanya
index.js
:Untuk menambahkan pengetikan, buat file
index.d.ts
:sumber
Seperti kata @takeshin .d singkatan file deklarasi untuk naskah (.ts).
Beberapa poin yang harus diklarifikasi sebelum melanjutkan untuk menjawab posting ini -
Jika Anda berpikir jika naskah adalah superset sintaksis, manfaat apa yang ditawarkannya - https://basarat.gitbooks.io/typescript/docs/why-typescript.html#the-typescript-type-system
Untuk Menjawab posting ini -
Seperti yang kita bahas, naskah adalah superset dari javascript dan perlu diubah menjadi javascript. Jadi jika pustaka atau kode pihak ketiga ditulis dalam naskah, akhirnya akan dikonversi ke javascript yang dapat digunakan oleh proyek javascript tetapi sebaliknya tidak berlaku.
Untuk mantan -
Jika Anda menginstal perpustakaan javascript -
dan coba mengimpornya dalam kode naskah -
Anda akan mendapatkan kesalahan.
Seperti yang disebutkan oleh @Chris, banyak perpustakaan seperti garis bawah, Jquery sudah ditulis dalam javascript. Daripada menulis kembali perpustakaan-perpustakaan itu untuk proyek naskah, solusi alternatif dibutuhkan.
Untuk melakukan ini, Anda dapat memberikan jenis file deklarasi di pustaka javascript bernama * .d.ts, seperti dalam kasus mylib.d.ts di atas. File deklarasi hanya menyediakan jenis deklarasi fungsi dan variabel yang ditentukan dalam file javascript masing-masing.
Sekarang ketika Anda mencoba -
mylib.d.ts diimpor yang bertindak sebagai antarmuka antara kode pustaka javascript dan proyek naskah.
sumber
Jawaban ini mengasumsikan Anda memiliki beberapa JavaScript yang tidak ingin Anda konversi ke TypeScript, tetapi Anda ingin mendapat manfaat dari pemeriksaan tipe dengan perubahan minimal pada Anda
.js
. SEBUAH.d.ts
file yang sangat banyak seperti C atau C ++ file header. Tujuannya adalah untuk mendefinisikan antarmuka. Berikut ini sebuah contoh:mashString.d.ts
mashString.js
main.js
Hubungan di sini adalah:
mashString.d.ts
mendefinisikan antarmuka,mashString.js
mengimplementasikan antarmuka, danmain.js
menggunakan antarmuka.Agar pemeriksaan jenis ini berfungsi, Anda tambahkan
// @ts-check
ke.js
file Anda . Tapi ini hanya memeriksa yangmain.js
menggunakan antarmuka dengan benar. Untuk juga memastikan bahwamashString.js
mengimplementasikannya dengan benar, kami menambahkan/** @type {import("./mashString")} */
sebelum ekspor.Anda dapat membuat
.d.ts
file awal menggunakantsc -allowJs main.js -d
kemudian mengeditnya seperti yang diperlukan secara manual untuk meningkatkan pemeriksaan tipe dan dokumentasi.Dalam kebanyakan kasus, implementasi dan antarmuka memiliki nama yang sama, di sini
mashString
. Tetapi Anda dapat memiliki implementasi alternatif. Misalnya kita bisa mengganti namamashString.js
menjadireverse.js
dan memiliki alternatifencryptString.js
.sumber