2017-04-27 3 views
1

Ich habe eine TypeScript-Datei foo.d.ts. Es enthält eine Menge „deklarieren Modul“ Konstrukte und nichts mehr:Importieren Sie Zeug aus der TypeScripd-Deklarationsdatei mit Deklarationen der Deklarationsebene "declare module"

declare module Foo { 
} 

declare module Fun { 
} 

Der Code wird automatisch erzeugt durch die Bridge.NET, also kann ich es nicht ändern (ich kann, tatsächlich aber ist es nicht. eine gut aussehende Lösung).

Wenn die Datei in einem anderen mit import * as bridge from "./foo"; referenziert wird, sagt der TSC, dass "File foo.d.ts ist kein Modul". Was mache ich falsch?

Wenn ich die generierte Datei (foo.d.ts) bearbeite und an das Ende davon Dummy Top-Level-Export (export interface Fix {}) hinzufügen, verschwindet das Problem.

Antwort

3

Der Grund für den Fehler, den Sie haben, ist, dass Ihr foo.d.ts eigentlich kein Modul ist, es ist ein Skript. Aber import Anweisung soll nur mit Modulen verwendet werden. Als Sie export interface Fix {} hinzugefügt haben, hat dies die Datei in ein Modul umgewandelt und deshalb ist der Fehler verschwunden.

Die allgemeine Regel ist ziemlich einfach, behandelt Typoskript Compiler eine Datei als ein Modul, wenn es mindestens eine Top-Level-Einheit (Klasse/Interface/Variable ..) ist enthalten Export Modifikator. Andernfalls wird die Datei wie ein Skript verarbeitet.

Wenn Sie nicht unbedingt foo.d.ts als Modul benötigen, können Sie es mithilfe der folgenden Richtlinie beziehen. In diesem Fall sind alle in der Datei deklarierten Entitäten global verfügbar.

/// <reference path="foo.d.ts" /> 
Verwandte Themen