Importieren Sie die js-Datei mit TypeScript 2.0
Abstrakte
Ich versuche zu importieren ".js" - Datei von einem externen Standort (z.B. node_modules) ich bin versucht, dies zu tun mit commonjs-Modul-Muster, jedoch import würde nicht wollen, um mit zu arbeiten ".js" - Datei-Typen, bis ich hinzufügen ".d....ts" Datei " in der Nähe ".js" - Datei in den gleichen Ordner.
Aber das problem ist, dass ich würde nicht wollen, um Einfluss auf node_modules mit meinem ".d....ts" Dateien. Ich will, dass es sich in einem anderen Ordner, getrennt von node_modules aber sobald ich das mache, typescript compiler eine Fehlermeldung aus:
Beispiel
Habe ich die folgende Ordner-Struktur:
|- DTS
| |- y.d.ts
|- main.ts
|- y.js
y.js hat den folgenden Inhalt
module.export = function (x) {
console.log(x);
};
y.d....ts hat den folgenden Inhalt
export interface Y {
(x): any;
}
declare let y: Y;
export default y;
main.ts hat den folgenden Inhalt
import * as y from './y'
Wenn ich jetzt versuche zu kompilieren main.ts mit:
tsc -m commonjs -t ES2015 main.ts
Bekomme ich eine Fehlermeldung:
x.ts(1,20): error TS2307: Cannot find module './y'.
Frage
Importieren ".js" - Dateien und in der Lage sein, Sie zu definieren ".d....ts" Erklärungen, während die beiden Dateien, die sich in verschiedenen Orten.
Bearbeiten
Hier ist der link zum Beispiel-Projekt. Werden Sie sicher, dass Typoskript-version 2.0-compiler. Und die tsc
Befehl von oben, um den Fehler anzuzeigen.
/// <reference path="./DTS/y.d....ts" />
import
das funktioniert nur, wenn ich d....ts
- Datei in demselben Verzeichnis. Aber ich will nicht zu tun, weil eine solche Handlung beeinflussen externes Modul, welches ich herunterladen durch npm
, so gibt es einen anderen Weg, um in der Lage sein, sowohl import
js-Datei und geben Sie d....ts
Datei, wenn Sie sich in verschiedenen Ordnern befinden? InformationsquelleAutor der Frage Lu4 | 2016-07-18
Du musst angemeldet sein, um einen Kommentar abzugeben.
Hinweis: Die offizielle Empfehlung für den Nachweis Ihrer Typ-Definitionen nimmt einen etwas anderen Ansatz als das, was unten angezeigt wird.
Ich glaube, der Ansatz unten ist etwas besser als der *.d....ts-Datei ist nahezu identisch mit dem Endprodukt.
Während typechecking (build-time) Typoskript arbeitet mit *.ts-Dateien und (meist) ignoriert *.js-Dateien.
Lassen Sie mich das an einem Beispiel motiviert, was (glaube ich) Sie vorschlägt.
Angenommen, es existiert ein ganz gute JavaScript-Bibliothek, die leider keine Testungen (z.B. N3).
Was wurde installiert über npm, also:
Diese typisch ist, wird Hinzugefügt, um ./node_modules/n3/... und Projekt.json.
Wie bereits erwähnt die Testungen nicht vorhanden und muss manuell Hinzugefügt werden.
Ich erstelle eine ./@Typen/n3.d....ts - Datei für diesen Zweck.
Für unsere Zwecke ist es nicht besonders wichtig, was die Definitionen tatsächlich sind, sondern so etwas wie der folgenden ist ein guter Anfang:
Nun zu deiner Frage.
Update der " tsconfig.json':
Wird es noch notwendig sein, um sich mit der run-time-Auflösung für das Auffinden der entsprechenden *.js-Dateien, aber das ist eine andere Frage als die, die Sie gefragt.
Für die Referenz, die Sie finden können Was ist neu in Typoskript
und diese Diskussion thread nützlich.
Dieser Ansatz funktioniert gut, wenn die Arbeit mit globalen Variablen, aber nicht so viel mit den Modulen.
Update der " tsconfig.json':
InformationsquelleAutor der Antwort phreed
import
folgt dem gleichen Modul-Entschließung Prozess, wenn da eine.js
oder.d.ts
- Datei mit relativen Dateien.InformationsquelleAutor der Antwort basarat