TypeScript-Typisierungen in npm @types-Organisationspaketen


135

Ich habe festgestellt, dass es eine npm-Organisation @types gibt , die Tipppakete enthält, aber keine Dokumentation dazu finden kann. Wie sollen diese verwendet werden?

Soll es mit dem Schreibwerkzeug verwendet werden? Wenn ja, wie werden sie installiert? Zum Beispiel gibt es ein @types/openlayersPaket, das aber typings search npm:openlayersnichts zurückgibt.

Soll es getrennt vom Schreibwerkzeug verwendet werden? ZB direkt installiert mit npm?


11
Vielen Dank für diese Frage.
Léon Pelletier

Antworten:


109

Ab TypeScript 2.0 sind keine Eingaben mehr erforderlich. Die npm-Organisation ist eine Einheit zum Einrichten eines Entwicklerteams. Ich glaube, Microsoft hat die @ types-Organisation in npm eingerichtet und das TypeScript-Entwicklerteam zur Organisation hinzugefügt. Pakete, die unter der Organisation @types angezeigt werden, werden automatisch von DefinitelyTyped mithilfe des Tools Typ-Publisher gemäß den Dokumenten veröffentlicht .

Darüber hinaus gibt es eine weitere Möglichkeit types, Ihre Pakete zu ergänzen :

In Ihrer package.json

Wenn Ihr Paket eine Hauptdatei .jsenthält, müssen Sie auch die Hauptdeklarationsdatei in Ihrer package.jsonDatei angeben . typesStellen Sie die Eigenschaft so ein, dass sie auf Ihre gebündelte Deklarationsdatei verweist. Beispielsweise:

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

Beachten Sie, dass das "typings"Feld synonym mit "types"ist und auch verwendet werden kann.

Beachten Sie außerdem, dass Sie die Eigenschaft nicht markieren müssen , wenn Ihre Hauptdeklarationsdatei benannt ist index.d.tsund sich im Stammverzeichnis des Pakets (neben index.js) "types"befindet. Dies ist jedoch ratsam.

In Bezug auf Suchtypen

Typdeklarationspakete sollten größtenteils immer denselben Namen wie der Paketname auf npm haben, jedoch mit dem Präfix @ types / versehen sein. Bei Bedarf können Sie jedoch unter https://aka.ms/types nach dem Paket suchen für Ihre Lieblingsbibliothek.

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

Aber als ich das tat npm search @types/openlayers, bekam ich keine Ergebnisse. Aber die Suche über das Webinterface hat mir die Ergebnisse zurückgegeben. Ich denke npm searchalso, dass nicht organisationsübergreifend gesucht wird.


Gute Antwort! Kleinere Änderungen wären nett, aber dies erklärt den aktuellen Status viel besser.
Ronald Zarīts

Da Sie in Ihrer Eigenschaft package.jsonunter der typesEigenschaft eine einzelne Datei angeben , ist mir aufgefallen, dass es sich um eine gebündelte Deklarationsdatei handelt . Was wäre der einfachste Weg, dies in einem automatisierten Build-System wie gulp zu erreichen?
Nicky

Muss ich das "main"Feld hinzufügen , wenn das Hauptfeld index.js heißt?
Knu

1
Vielen Dank für dieses "Beachten Sie, dass das "typings"Feld synonym "types"ist und auch verwendet werden könnte"
Serhii Popov

42

Die Ankündigung im TypeScript-Blog beantwortet Folgendes: Die Zukunft der Deklarationsdateien

Zusammenfassung:

Die @typesnpm-Organisation dient zum Abrufen von Typdefinitionen mit npm. Die Verwendung dieser Typdefinitionen ist eine Funktion, die in TypeScript 2.0 verfügbar ist.

Dies wird die aktuellen Projekte / Tools wie Typings und tsd ersetzen , obwohl diese noch einige Zeit unterstützt werden.


1
Hey Ron, ich versuche also, diese Einstellungen zu erhalten, aber es scheint nicht, dass VSCode merkt, dass ich sie installiert habe. Nachdem ich so etwas wie core-jsw / verwendet habe npm i @types/core-js --save, kann ich sehen, dass es sich im Ordner befindet, aber das Projekt gibt immer noch Fehler für Dinge aus. Gibt es noch etwas, was ich tun sollte? Muss ich tsconfig auf @types oder etwas aufmerksam machen? Wie Sean sagte, gibt es noch keine Dokumentation für Typen :(
Mark Pieszak - Trilon.io

@MarkPieszak Sie müssen sicher sein, dass VSCode TS2.0 verwendet. Hier erfahren Sie, wie Sie TypeScript lokal installieren und in VSCode verwenden können: github.com/Microsoft/TypeScript/wiki/Nightly-drops
nino.porcino

Yup das war es @ nino.porcino danke :) tsdkmusste auf eine 2.0beta Installation von TS
Mark Pieszak - Trilon.io

Zumindest für einige Teamprojekte, die wir aktualisieren (und auch für andere GH-Projekte, die wir gesehen haben), sollte man auch tsconfig.jsonmit einer "types"Array-Eigenschaft aktualisieren, die diese "types": ["core-js"]
Modulnamen

7

Dies wird eine Funktion sein, die in Typescript 2.0 eingeführt wird. Dies bietet Typunterstützung für UMD-Module / Bibliotheken und ihre jeweiligen Definitionen.

Weitere Informationen zu den aktuellen Problemen mit Umgebungstypen finden Sie unter ( Integrierte Unterstützung für UMD-Moduldefinitionen ).


Danke dir! Dies ist nützlich, aber ich sehe kein GitHub-Problem, das die @types npm-Organisation behandelt. Ist die @ types-Organisation speziell für das UMD- /// <referenceSzenario? Sucht der TypeScript-Compiler automatisch nach Typen unter node_modules/@types(wie er nach Modulen in node_moduleswann sucht 'moduleResolution': 'node')? Wofür bedeutet das? typingsEs behandelt auch Umgebungsabhängigkeiten. Ist es in irgendeiner Weise verwandt?
Ronald Zarīts
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.