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?

Ronald Zarīts
źródło
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.

randominstanceOfLivingThing
źródło
Ś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.

Ronald Zarīts
źródło
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.

Sean Larkin
źródło
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