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!
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
'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
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