vscode: Cara mereferensikan tipe dari perpustakaan node_module

Saya telah menginstal modul npm (react-native-mobx) yang disertakan dengan tipenya. Ini adalah file dari direktori node_modules:

masukkan deskripsi gambar di sini

Perhatikan file mobx.d.ts yang disorot yang berisi tipenya. Saya telah menginstal skrip ketikan 2.2.2. Dan seperti saya sekarang, tipe sekarang terdapat di folder @types, di dalam node_modules. Dalam hal ini, bagaimana cara mereferensikan perpustakaan ini dalam kode saya dan memiliki kecerdasan normal? Haruskah saya membuat folder 'react-native-mobx' di dalam @typesdan menyalin mobx.d.ts di sana dan mengubah namanya menjadi index.d.ts?

Terima kasih untuk bantuannya.


person TheSoul    schedule 20.04.2017    source sumber
comment
harus bekerja di luar kotak sejauh yang saya tahu. Anda dapat menjalankan 'tsc' secara manual dengan flag ' --traceResolution' dan Anda akan melihat skrip ketikan mencari tipe di node_modules/react-native-mobx sebelum mencari di folder node_modules/@types/react-native-mobx.   -  person Aviad Hadad    schedule 20.04.2017
comment
Terima kasih jika jawabannya. Ini adalah jawaban yang saya jalankan 'tsc --traceResolution' : File 'C:/.../node_modules/react-native-mobx/index.d.ts' tidak ada.   -  person TheSoul    schedule 20.04.2017
comment
Sepertinya tsc mengharapkan index.d.ts di root perpustakaan   -  person TheSoul    schedule 20.04.2017


Jawaban (2)


Ini seharusnya berhasil untuk Anda. Versi mobx apa yang Anda gunakan?

Dalam [email protected] node_modules/mobx/package.json menentukan "typings": "lib/mobx.d.ts" yang akan diperiksa oleh kompiler TypeScript tsc untuk menemukan pengetikannya.

Jika package.json tidak menentukan nilai typings atau types, maka nilai defaultnya adalah mencari index.d.ts, lihat dokumen untuk informasi lebih spesifik tentang cara penyelesaiannya: https://www.typescriptlang.org/docs/handbook/declaration-files/publishing.html

Mungkin Anda menggunakan versi mobx yang lebih lama yang tidak memiliki package.json yang sesuai dengan typings yang ditentukan

person Alex    schedule 21.04.2017

@Alex, terima kasih atas jawabannya. Dan ya, package.json menentukan typings": "lib/mobx.d.ts. Masalahnya adalah: definisi file ini tidak terletak di root perpustakaan tetapi di dalam sub direktori. Ini adalah struktur folder di dalam folder node_modules proyek:

 /react-native-mobx
    -index.js
    -package.json
    -readme.md
    ...
    /node_modules
         /mobx
            -package.json <-- "typings: lib/mobx.d.ts"
            /lib
               - mob.d.ts

Ketika saya menjalankan tsc --traceResolution, saya dapat melihat bahwa TypeScript memang mengurai folder dalam ini. Tetapi dilaporkan bahwa package.json tidak berisi pengetikan, sangat aneh...

perbarui Sebagai solusinya, saya menyalin mobx.d.ts dari folder dalamnya ke folder root dan saya mengubah namanya menjadi index.d.ts. Sekarang TypeScript mengambil tipenya. Tapi ini adalah solusi yang sangat buruk karena saya mengacaukan file di dalam folder node_modules.

person TheSoul    schedule 21.04.2017