import - TypeScript: Geben Sie ein Verzeichnis an, in dem nach Typdefinitionen für Module gesucht werden soll
Heyho,
Ich möchte einige JavaScript-Bibliotheken in meinem TypeScript-Code verwenden, für die es keine Typdefinitionen in npm gibt. Also habe ich die Typdefinitionen selbst geschrieben und sie in ein definitions-Verzeichnis in meinem Quellbaum gelegt. Allerdings konnte ich TypeScript nicht dazu bringen, in diesem Verzeichnis nach diesen Modulen zu suchen.
Meine Verzeichnisstruktur sieht so aus:
+-node_modules
| |
| +-moduleA
| |
| +-moduleB
|
+-src
| |
| +-definitions
| | |
| | +-moduleA.d.ts
| | |
| | +-moduleB.d.ts
| |
| +-ts
| |
| + ... all typescript code ...
|
+-tsconfig.json
Ich habe versucht, die Module im definitions-Verzeichnis einzubinden, indem ich
includefilestypeRootspaths
Allerdings hat nichts davon funktioniert.
Kann mir jemand sagen, wie man TypeScript dazu bringt, diese Typdefinitionen einzubeziehen?
PS: Warum ist die Handhabung von TypeScript-Modulen so kompliziert???
Antwort #1
{
"compilerOptions": {
"typeRoots": [
"./node_modules/@types",
"./some-custom-lib"
]
}
}
Das typeRoots-String-Array ist genau dafür. Zusätzlich zu Ihrem normalen "node_modules/@type" fügen Sie einen selbst erstellten Typing-Ordner hinzu.
Antwort #2
Sie können sie mit den dreifachen Schrägstrich-Direktiven einfügen, um den Compiler anzuweisen, sie zu verwenden.
Zum Beispiel erstellen Sie eine index.d.ts-Datei und legen Sie sie in Ihren Definitionsordner. Dort können Sie jede benutzerdefinierte Typisierung einfügen, die Sie erstellt haben. Es könnte so aussehen
/// <reference path="react.patch.d.ts" />
/// <reference path="custom-typings.d.ts" />
Innerhalb der Typdefinitionsdatei muss die erste Zeile sein
/// <reference types="nameOfIt" />
Dann fügen Sie sie in Ihrer tsconfig.json im files-Feld ein, z.B.
"files": [
"definitions/index.d.ts"
]
