Typy języka TypeScript w pakietach npm @types org


135

Zauważyłem, że istnieje organizacja npm @types , która zawiera pakiety do pisania, ale nie mogę znaleźć na jej temat żadnej dokumentacji. Jak mają być używane?

Czy ma być używany z narzędziem do pisania ? Jeśli tak, jak je zainstalować? Na przykład jest @types/openlayerspakiet, ale typings search npm:openlayersnic nie zwraca.

Czy ma być używany oddzielnie od narzędzia do pisania? Np. Zainstalowany bezpośrednio z npm?


11
Dziękuję za to pytanie.
— Léon Pelletier

Odpowiedzi:


109

Począwszy od TypeScript 2.0, wpisywanie nie jest już wymagane. Organizacja npm to podmiot, który tworzy zespół programistów. Uważam, że Microsoft skonfigurował organizację @types w npm i dodał zespół programistów TypeScript do organizacji. Pakiety w ramach organizacji @types są publikowane automatycznie z witryny DefinitelyTyped przy użyciu narzędzia types-publisher zgodnie z dokumentacją .

Ponadto istnieje inny sposób dodawania typesdo pakietów:

W pliku package.json

Jeśli twój pakiet ma .jsplik główny , będziesz musiał wskazać również główny plik deklaracji w swoim package.jsonpliku. Ustaw typeswłaściwość tak, aby wskazywała na dołączony plik deklaracji. Na przykład:

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

Zwróć uwagę, że "typings"pole to jest synonimem "types"i może być również używane.

Zauważ również, że jeśli twój główny plik deklaracji ma nazwę index.d.tsi znajduje się w katalogu głównym pakietu (obok index.js), nie musisz oznaczać "types"właściwości, chociaż jest to zalecane.

Odnośnie typów wyszukiwania

W większości przypadków pakiety deklaracji typu powinny zawsze mieć taką samą nazwę jak nazwa pakietu na npm, ale z prefiksem @ types /, ale jeśli potrzebujesz, możesz sprawdzić https://aka.ms/types, aby znaleźć pakiet dla swojej ulubionej biblioteki.

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

Ale kiedy to zrobiłem npm search @types/openlayers, nie uzyskałem żadnych wyników. Ale wyszukiwanie z poziomu interfejsu internetowego zwróciło mi wyniki. Więc myślę, że npm searchnie przeszukuje organizacji.


Świetna odpowiedź! Drobne zmiany byłyby miłe, ale znacznie lepiej wyjaśnia obecny stan.
— Ronald Zarīts,

Ponieważ określić pojedynczy plik w package.jsonramach typeswłasności, zauważyłem, że mówisz o dołączonym pliku deklaracji . Jaki byłby najłatwiejszy sposób osiągnięcia tego w zautomatyzowanym systemie kompilacji, takim jak gulp?
— Nicky

Czy muszę dodawać "main"pole, jeśli nazwa main ma nazwę index.js?
— Knu

1
Wielkie dzięki za to „Zauważ, że "typings"pole jest synonimem "types"i może być również używane”
— Serhii Popov

42

Ogłoszenie na blogu TypeScript odpowiada na to pytanie: Przyszłość plików deklaracji

Podsumowanie:

Organizacja @typesnpm służy do uzyskiwania definicji typów z npm. Korzystanie z tych definicji typów jest funkcją, która zostanie wprowadzona w języku TypeScript 2.0.

Zastąpi to obecne projekty / narzędzia, takie jak pisanie i tsd , chociaż będą one nadal obsługiwane przez jakiś czas.


1
Hej Ron, więc próbuję uzyskać te ustawienia, ale nie wygląda na to, że VSCode zdaje sobie sprawę, że mam je zainstalowane. Po użyciu czegoś takiego jak core-jsw / npm i @types/core-js --savewidzę, że jest w folderze, ale projekt nadal generuje błędy. Czy jest coś jeszcze, co powinienem zrobić? Czy muszę pozwolić tsconfig być świadomy @types czy czegoś takiego? Jak Sean powiedział, że nie ma nigdzie rodzajów dokumentacji jeszcze :(
— Mark Pieszak - Trilon.io

@MarkPieszak musisz mieć pewność, że VSCode używa TS2.0. Zobacz, jak lokalnie zainstalować TypeScript i używać go w VSCode tutaj: github.com/Microsoft/TypeScript/wiki/Nightly-drops
— nino.porcino

Yup to było to @ nino.porcino dziękuję :) tsdknależało wskazywał na 2.0beta zainstalować TS
— Mark Pieszak - Trilon.io

przynajmniej w przypadku niektórych projektów zespołowych, które aktualizujemy (a także w innych projektach GH, które widzieliśmy), należy również zaktualizować tsconfig.jsono "types"właściwość tablicy zawierającą nazwy tych modułów, np."types": ["core-js"]
— superjos

7

Będzie to funkcja wprowadzona w programie Typescript 2.0. Zapewnia to obsługę typów dla modułów / bibliotek UMD i ich odpowiednich definicji.

Zobacz ( Wbudowana obsługa definicji modułów UMD ), aby lepiej zrozumieć problemy z typami otoczenia.


Dziękuję Ci! Jest to przydatne, ale nie widzę problemu z usługą GitHub omawiającego @types npm org. Czy organizacja @types jest przeznaczona specjalnie dla /// <referencescenariusza UMD ? Czy kompilator TypeScript automatycznie wyszuka typy pod node_modules/@types(tak jak szuka modułów w node_moduleswhen'moduleResolution': 'node' )? Co to oznacza typings- obsługuje również zależności otoczenia. Czy jest to w jakikolwiek sposób powiązane?
— Ronald Zarīts
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.