Kiểu chữ typScript trong gói npm @types org


135

Tôi đã nhận thấy có một tổ chức npm @types , có chứa các gói gõ, nhưng không thể tìm thấy bất kỳ tài liệu nào về nó. Làm thế nào là chúng được sử dụng?

Nó có nghĩa là được sử dụng với công cụ typings ? Nếu vậy, làm thế nào để cài đặt chúng? Chẳng hạn, có một @types/openlayersgói, nhưng typings search npm:openlayerskhông trả về gì cả.

Nó có nghĩa là được sử dụng riêng biệt từ các công cụ đánh máy? Ví dụ: cài đặt trực tiếp với npm?


11
Cảm ơn bạn cho câu hỏi này.
Léon Pelletier

Câu trả lời:


109

Tính đến nguyên cảo 2.0, typings không còn cần thiết. Tổ chức npm là một thực thể để thiết lập một nhóm các nhà phát triển. Tôi tin rằng Microsoft thiết lập tổ chức @types trong npm và thêm nhóm nhà phát triển TypeScript vào tổ chức. Các gói trên thuộc tổ chức @types được xuất bản tự động từ DefiniteTyped bằng cách sử dụng công cụ nhà xuất bản loại theo tài liệu .

Ngoài ra, có một cách khác để thêm typesvào các gói của bạn:

Trong gói.json của bạn

Nếu gói của bạn có .jstệp chính , bạn cũng cần chỉ rõ tệp khai báo chính trong package.jsontệp của mình . Đặt thuộc typestính để trỏ đến tệp khai báo đi kèm của bạn. Ví dụ:

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

Lưu ý rằng "typings"trường đồng nghĩa với "types"và cũng có thể được sử dụng.

Cũng lưu ý rằng nếu tệp khai báo chính của bạn được đặt tên index.d.tsvà nằm ở thư mục gốc của gói (bên cạnh index.js), bạn không cần phải đánh dấu thuộc "types"tính, mặc dù vậy nên làm như vậy.

Về các loại tìm kiếm

Đối với hầu hết các phần, các gói khai báo phải luôn có cùng tên với tên gói trên npm, nhưng có tiền tố là @ type /, nhưng nếu bạn cần, bạn có thể xem https://aka.ms/types để tìm gói cho thư viện yêu thích của bạn.

Từ - http://www.typescriptlang.org/docs/handbook/declaration-files/conscharge.html

Nhưng khi tôi làm npm search @types/openlayers, tôi đã không nhận được bất kỳ kết quả. Nhưng thực hiện tìm kiếm từ giao diện web đã trả về cho tôi kết quả. Vì vậy, tôi đoán npm searchkhông tìm kiếm trên khắp các tổ chức.


Câu trả lời chính xác! Chỉnh sửa nhỏ sẽ tốt, nhưng điều này làm tốt hơn nhiều việc giải thích tình trạng hiện tại.
Ronald Zarīts

Kể từ khi bạn chỉ định một tập tin duy nhất trong bạn package.jsondưới typesbất động sản, tôi nhận thấy bạn đang nói về tập tin tuyên bố kèm . Điều gì sẽ là cách dễ nhất để đạt được điều này trong một hệ thống xây dựng tự động như gulp?
Nicky

Tôi có phải thêm "main"trường nếu chính được đặt tên là index.js không?
Knu

1
Rất cám ơn vì điều này "Lưu ý rằng "typings"lĩnh vực này đồng nghĩa với"types" và cũng có thể được sử dụng"
Serhii Popov

42

Thông báo trên blog TypeScript trả lời điều này: Tương lai của các tệp khai báo

Tóm lược:

Các @typestổ chức NPM là để đạt được định nghĩa kiểu với npm. Sử dụng các định nghĩa loại này là một tính năng sắp có trong TypeScript 2.0.

Điều này sẽ thay thế các dự án hiện tại / công cụ như typingstsd , mặc dù chúng sẽ tiếp tục được hỗ trợ trong một thời gian.


1
Xin chào Ron, vì vậy tôi đang cố gắng để có được các thiết lập này, nhưng có vẻ như VSCode không nhận ra tôi đã cài đặt chúng. Sau khi sử dụng một cái gì đó như core-jsw / npm i @types/core-js --save, tôi có thể thấy nó trong thư mục, nhưng dự án vẫn đưa ra lỗi cho mọi thứ. Có điều gì khác tôi nên làm không? Tôi có cần để tsconfig biết về @types hay gì không? Giống như Sean đã nói, chưa có tài liệu nào cho các loại :(
Mark Pieszak - Trilon.io

@MarkPieszak bạn phải chắc chắn VSCode đang sử dụng TS2.0. Xem cách cài đặt TypeScript cục bộ và sử dụng nó trong VSCode tại đây: github.com/Microsoft/TypeScript/wiki/Nightly-drops
nino.porcino

Yup đó là @ nino.porcino cảm ơn bạn :) tsdkcần được chỉ ra một bản cài đặt 2.0beta của TS
Mark Pieszak - Trilon.io

ít nhất là đối với một số dự án nhóm chúng tôi cập nhật (và cũng có thể trong các dự án GH khác mà chúng tôi nhìn thấy) nên cũng cập nhật tsconfig.jsonvới một "types"bất động sản mảng danh sách những tên mô-đun, ví dụ:"types": ["core-js"]
superjos

7

Đây sẽ là một tính năng được đưa ra trong Bản mô tả 2.0. Điều này cung cấp hỗ trợ kiểu cho Mô-đun / Thư viện UMD và các định nghĩa tương ứng của chúng.

Xem ( Hỗ trợ tích hợp cho các định nghĩa mô-đun UMD ) để hiểu rõ hơn về các vấn đề hiện tại với các kiểu chữ xung quanh.


Cảm ơn bạn! Điều này hữu ích, nhưng tôi không thấy vấn đề GitHub thảo luận về @types npm org. Là @types org dành riêng cho /// <referencekịch bản UMD ? Trình biên dịch TypeScript sẽ tự động tìm kiếm các loại bên dưới node_modules/@types(vì nó sẽ tìm các mô-đun trong node_moduleskhi nào 'moduleResolution': 'node')? Điều này có nghĩa là gì typings- nó cũng xử lý các phụ thuộc môi trường xung quanh. Có liên quan theo bất kỳ cách nào?
Ronald Zarīts
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.