2016-09-06 6 views
0

Angenommen, ich schreibe ein Knotenmodul, m. Später entscheide ich mich, Typescript-Typings hinzuzufügen. Glücklicherweise exportiert das Modul nur eine einzige Funktion, so dass die MDTs Datei ist wie folgt:Wenn ich einem npm-Modul Typisierungen hinzufüge, wie kann ich mich auf globale Typisierungen verlassen?

/// <reference path="./typings/globals/node/index.d.ts" /> 

declare module "m" { 
    doThings(b: Buffer): int; 

    export = doThings; 
} 

Meine Funktion verwendet der Knoten Buffer, so enthalten ich einen gültigen Bezug auf die Knoten Typisierungen im eingebauten typings Ordner (ohne es , Sublime gibt mir die „Can not Namen‚Puffer‘Nachricht, die wie eine schlechte Sache scheint). Alles sieht gut aus, so dass ich aktualisieren Sie die typings Schlüssel in meiner package.json und bereitstellen.

Getrennt davon ich verwende Modul finden m in einem separaten Typoskript-Projekt, . Ich muss mich nicht sorgen typings, da In meinem Modul sind Typen enthalten. Wenn ich tsc laufen lasse, erhalte ich folgenden Fehler: node_modules/m/m.d.ts(6,1): error TS6053: File '/Users/$USER/projects/p/node_modules/m/typings/globals/node/index.d.ts' not found. Das macht sehr viel Sinn, da es keinen typings Ordner in node_modules gibt (ich war unter dem Eindruck, generierte Ordner zu überprüfen, wie das entmutigt wurde). Wenn eine Typisierungsdatei in DefinitelyTyped geladen wird, werden alle dreifachen Schrägstrichreferenzen ausgeblendet (und die best practices besagt, dass Sie sie nicht in d.ts-Dateien einschließen sollten). Wenn eine Typisierungsdatei in ein NPM-Modul geladen wird, wird nichts entfernt.

Also meine Frage ist das: kann ich meinen Kuchen haben und es auch essen? Ist es möglich, gültige Typings in meinem Modul zu haben (m), ohne gebrochene Referenzen in externen Projekten (p) zu berücksichtigen?

Vielen Dank!

Antwort

0

can I have my cake and eat it too? Is it possible to have valid typings in my module (m) while not including broken references in external projects (p)?

Sie enthalten node.d.ts nicht als Referenz-Tag. Stattdessen geben Sie an, dass die Benutzer node.d.ts in ihren Kompilierungskontext einschließen müssen, z. Verwenden von tsconfig.json.

+0

Fair genug. Bedeutet das, dass ich mit Fehlern in meinem Modul lebe (es wird sich beschweren, dass man den Puffer nicht kennt) und das ist in Ordnung? – xavdid

+0

'Bedeutet das, dass ich mit Fehlern in meinem Modul lebe (es wird sich beschweren, dass man den Puffer nicht kennt) und das ist in Ordnung" nein. Sie sollten 'node.d.ts' auch in Ihrem Projekt haben und über tsconfig.json eingebunden werden. – basarat

+0

Ah, ich dachte nicht, ein 'tsconfig' zu enthalten, weil es kein Typoskript-Projekt war, sondern nur ein js-Projekt mit Typdefinition. Danke für Ihre Hilfe! – xavdid

Verwandte Themen