我有一个TypeScript文件foo.d.ts。它包含了许多“声明模块”结构,仅此而已:
declare module Foo {
}
declare module Fun {
}代码是由Bridge.NET自动生成的,所以我无法修改它(实际上我可以修改它)。但这不是一个好看的解决方案)。
如果在另一个带有import * as bridge from "./foo";的文件中引用该文件,则tsc表示“Filefoo.d.ts不是一个模块”。我做错什么了?
如果我编辑生成的文件(foo.d.ts)并在其末尾添加虚拟顶级导出(export interface Fix {}),问题就会消失。
发布于 2017-04-27 10:59:08
出现错误的原因是您的foo.d.ts实际上不是一个模块,而是一个脚本。但是import语句应该仅与模块一起使用。当您添加export interface Fix {}时,这会将文件转换为一个模块,这就是错误消失的原因。
通用规则非常简单,如果至少有一个顶级实体(class/接口/变量.),则TypeScript编译器将文件视为一个模块。包含导出修饰符。否则,文件将像脚本一样被处理。
如果您真的不需要foo.d.ts作为一个模块,您可以使用下面的指令引用它。在这种情况下,文件中声明的所有实体都是全局可用的。
/// <reference path="foo.d.ts" />https://stackoverflow.com/questions/43654444
复制相似问题