2017-04-27 30 views
1

J'ai un fichier TypeScript foo.d.ts. Il contient beaucoup de « déclarer module » constructions et rien de plus:Importer des données à partir du fichier de déclaration TypeScripd avec uniquement les déclarations de niveau supérieur "déclarer le module"

declare module Foo { 
} 

declare module Fun { 
} 

Le code est généré automatiquement par le Bridge.NET, donc je ne peux pas le modifier (je peux, en fait mais ce n'est pas. une belle solution).

Si le fichier est référencé dans un autre avec import * as bridge from "./foo"; le tsc indique que "Fichier foo.d.ts n'est pas un module". Qu'est-ce que je fais mal?

Si j'édite le fichier généré (foo.d.ts) et ajoute à la fin de l'exportation de haut niveau factice (export interface Fix {}) le problème disparaît.

Répondre

3

La raison de l'erreur que vous avez est que votre foo.d.ts n'est pas réellement un module, c'est un script. Mais l'instruction import est supposée être utilisée uniquement avec les modules. Lorsque vous avez ajouté export interface Fix {}, cela a transformé le fichier en module et c'est pourquoi l'erreur avait disparu.

La règle commune est assez simple, compilateur tapuscrit traite un fichier en tant que module s'il y a au moins une entité de niveau supérieur (classe/Interface/variables ..) contenant modificateur export. Sinon, le fichier sera traité comme un script.

Si vous n'avez pas vraiment besoin de foo.d.ts pour être un module, vous pouvez vous référer à la directive ci-dessous. Dans ce cas, toutes les entités déclarées dans le fichier seront globalement disponibles.

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