Pengetikan TypeScript dalam paket npm @types org

139

Saya perhatikan ada organisasi npm @types , yang berisi paket pengetikan, tetapi tidak dapat menemukan dokumentasi apa pun di dalamnya. Bagaimana ini dimaksudkan untuk digunakan?

Apakah ini dimaksudkan untuk digunakan dengan alat pengetikan ? Jika ya, bagaimana cara menginstalnya? Misalnya, ada sebuah @types/openlayerspaket, tetapi typings search npm:openlayerstidak mengembalikan apa-apa.

Apakah ini dimaksudkan untuk digunakan secara terpisah dari alat pengetikan? Misal dipasang langsung dengan npm?

Ronald Zarīts
sumber
12
Terima kasih atas pertanyaannya.
Léon Pelletier

Jawaban:

110

Sejak TypeScript 2.0, pengetikan tidak lagi diperlukan. Organisasi npm adalah entitas untuk menyiapkan tim pengembang. Saya percaya Microsoft mengatur organisasi @types di npm dan menambahkan tim pengembang TypeScript ke organisasi. Paket di bawah organisasi @types diterbitkan secara otomatis dari DefinitelyTyped menggunakan alat penayang jenis sesuai dengan dokumen .

Selain itu, ada cara lain untuk menambahkan typespaket Anda:

Di package.json Anda

Jika paket Anda memiliki .jsfile utama , Anda juga perlu menunjukkan file deklarasi utama di package.jsonfile Anda . Setel typesproperti untuk menunjuk ke file deklarasi yang dibundel Anda. Sebagai contoh:

{
    "name": "awesome",
    "author": "Vandelay Industries",
    "version": "1.0.0",
    "main": "./lib/main.js",
    "types": "./lib/main.d.ts"
}

Perhatikan bahwa "typings"bidang ini identik dengan "types", dan bisa digunakan juga.

Perhatikan juga bahwa jika file deklarasi utama Anda dinamai index.d.tsdan berada di root paket (di sebelah index.js), Anda tidak perlu menandai "types"properti, meskipun disarankan untuk melakukannya.

Mengenai jenis pencarian

Untuk sebagian besar, paket deklarasi tipe harus selalu memiliki nama yang sama dengan nama paket di npm, tetapi diawali dengan @ types /, tetapi jika perlu, Anda dapat memeriksa https://aka.ms/types untuk menemukan paketnya untuk perpustakaan favorit Anda.

Dari - http://www.typescriptlang.org/docs/handbook/declaration-files/consumption.html

Tetapi ketika saya melakukannya npm search @types/openlayers, saya tidak mendapatkan hasil apa pun. Tetapi melakukan penelusuran dari antarmuka web memang mengembalikan hasil. Jadi saya kira npm searchtidak mencari di seluruh organisasi.

randominstanceOfLivingThing
sumber
Jawaban yang bagus! Pengeditan kecil akan menyenangkan, tetapi ini melakukan pekerjaan yang jauh lebih baik dalam menjelaskan keadaan saat ini.
Ronald Zarīts
Karena Anda menentukan satu file di package.jsondalam typesproperti Anda, saya perhatikan Anda sedang berbicara tentang file deklarasi yang dibundel . Apa cara termudah untuk mencapai ini dalam sistem build otomatis seperti gulp?
Nicky
Apakah saya harus menambahkan "main"field jika main bernama index.js?
Knu
2
Terima kasih banyak untuk "Perhatikan bahwa "typings"bidang ini identik dengan "types", dan dapat digunakan juga"
Serhii Popov
42

Pengumuman di blog TypeScript menjawab ini: Masa Depan File Deklarasi

Ringkasan:

The @typesorganisasi NPM adalah untuk memperoleh jenis definisi dengan npm. Menggunakan definisi jenis ini adalah fitur yang akan hadir di TypeScript 2.0.

Ini akan menggantikan proyek / alat saat ini seperti pengetikan dan tsd , meskipun ini akan terus didukung untuk beberapa waktu.

Ronald Zarīts
sumber
1
Hai Ron, Jadi saya mencoba untuk mendapatkan pengaturan ini, tetapi sepertinya VSCode tidak menyadari bahwa saya telah menginstalnya. Setelah menggunakan sesuatu seperti core-jsw / npm i @types/core-js --save, saya dapat melihatnya di folder, tetapi proyek masih membuat kesalahan untuk banyak hal. Apakah ada hal lain yang harus saya lakukan? Apakah saya perlu memberi tahu tsconfig tentang @types atau sesuatu? Seperti yang dikatakan Sean, belum ada dokumentasi di mana pun untuk jenisnya :(
Mark Pieszak - Trilon.io
@ MarkPieszak Anda harus memastikan VSCode menggunakan TS2.0. Lihat cara menginstal TypeScript secara lokal dan menggunakannya di VSCode di sini: github.com/Microsoft/TypeScript/wiki/Nightly-drops
nino.porcino
Yup itu saja @ nino.porcino terima kasih :) tsdkperlu diarahkan ke instalasi 2.0beta TS
Mark Pieszak - Trilon.io
setidaknya untuk beberapa proyek tim yang kami perbarui (dan juga dalam proyek GH lain yang kami lihat) seseorang juga harus memperbarui tsconfig.jsondengan "types"properti array yang mencantumkan nama modul tersebut, misalnya"types": ["core-js"]
superjos
7

Ini akan menjadi fitur yang diluncurkan di Typecript 2.0. Ini memberikan dukungan tipe untuk Modul / Perpustakaan UMD dan definisinya masing-masing.

Lihat ( Dukungan bawaan untuk definisi modul UMD ) untuk mendapatkan pemahaman yang lebih baik tentang masalah saat ini dengan pengetikan ambien.

Sean Larkin
sumber
Terima kasih! Ini berguna, tetapi saya tidak melihat masalah GitHub yang membahas @types npm org. Apakah @types org khusus untuk /// <referenceskenario UMD ? Akankah compiler TypeScript secara otomatis mencari tipe di bawah node_modules/@types(seperti mencari modul di node_modulessaat 'moduleResolution': 'node')? Apa artinya ini typings- ini juga menangani dependensi ambient. Apakah itu terkait dengan cara apa pun?
Ronald Zarīts