microsoft / microsoft/TypeScript

Cannot find type definition file for ambient declaration module

Offen
#34,749 11 Kommentare 2 Reaktionen 0 zugewiesene Personen Auf GitHub ansehen

Dieses Issue hat noch niemand übernommen.

Needs Investigation
Vorherrschende Sprache
Go
Sterne
111k
Forks
14.3k
Ø Merge
1 T. 19 Std.
Gemergte PRs (30 T.)
117

Beschreibung

TypeScript Version: 3.6 to 3.8.0-dev.20191025

Search Terms: ambient module triple slash reference path declaration

Code

// A *self-contained* demonstration of the problem follows...
[typings/somemodule/index.d.ts]
declare module "somemodule"
{
  export namespace common {
    export interface Foo {
      bar: string;
      fuzz: Number;
    }
  }
}

[src/index.ts]
/// <reference path="../typings/somemodule/index.d.ts" />

Typescript 3.5.3 works as expected, anything at or above 3.6 has the same issue..

When running tsc -d, for a manually created declaration file, the triple slash reference path file should be preserved in the output declaration file. This particular declaration file acts as a shim for an existing library whose type definitions are incomplete and is to be included as-is and without transpiler manipulation in the output declaration file. This provides accurate intellisense for package consumers and ensures build errors do not occur.

Expected behavior:
Maintain the same triple-slash reference path in the .d.ts file as was in the .ts file.

[dist/index.d.ts]
/// <reference path="../typings/somemodule/index.d.ts" />

Actual behavior:
The reference path is changed to reference types and the relative path is also broken:

[dist/index.d.ts]
/// <reference types="typings/somemodule" />

This causes consuming applications of the package to receive the following build error:
Cannot find type definition file for 'typings/somemodule'.

I have been unsuccessful in manipulating the consuming application to build correctly or provide correct intellisense with the updated directive. The original directive must be preserved.

Playground Link:

Related Issues: I believe this is where the issue was introduced: #32878

Beitragsleitfaden

Beitragsleitfaden öffnen

Erste Schritte

  1. Lies das ganze Issue und danach den Beitragsleitfaden des Projekts.
  2. Schreib ins Issue, dass du es übernimmst — das erspart doppelte Arbeit.
  3. Forke das Repository und arbeite in einem Branch.
  4. Öffne einen Pull Request, der die Issue-Nummer nennt.

Rechercherichtung

Reproduziere das Problem mit tsc -d unter Verwendung von src/index.ts und typings/somemodule/index.d.ts und vergleiche die generierte dist/index.d.ts mit der erwarteten Triple-Slash-Referenz. Lies den zugehörigen Issue #32878 und verfolge das Verhalten bei der Ausgabe von Deklarationen, das für die Konvertierung der Pfadreferenz verantwortlich ist. Erledigt bedeutet, dass der ursprüngliche Referenzpfad beibehalten wird und konsumierende Anwendungen nicht mehr die fehlende Typdefinitionsdatei melden.

Vom Indexierungsmodell aus dem Issue-Text verfasst.

Bewertung

Tech-Stack
typescript
Bereich
compilers
Issue-Typ
Bug
Schwierigkeit
4/5
Geschätzter Aufwand
3-5 Tage
Aktivitätsstatus
Veraltet
Klarheit
Größtenteils klar
Anfängerfreundlichkeit
35/100

Neue Issues direkt in Ihr Postfach

Eine kurze Übersicht über anfängerfreundliche GitHub-Issues.