Website-Suche

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

  • include
  • files
  • typeRoots
  • paths

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"
  ]

Verwandte Artikel