Node.js d、 ts文件不能";见;类型声明

Node.js d、 ts文件不能";见;类型声明,node.js,typescript,typescript2.2,Node.js,Typescript,Typescript2.2,我有这样的结构: dts/ my-types.d.ts lib/ a.ts a.d.ts b.ts b.d.ts a、 ts和b.ts都引用某个类型,我们称之为IFoo 因为它们共享IFoo,所以我想将该声明放在一个共享位置,所以我将IFoo放在dts/my-types.d.ts中 看起来像这样: interface IFoo { [key: string]: any } 有道理吧 但我的问题是,尽管在a.ts、b.ts和c.ts中可以识别IFoo,但一旦创建了声明文

我有这样的结构:

dts/
  my-types.d.ts
lib/
  a.ts
  a.d.ts
  b.ts
  b.d.ts
a、 ts和b.ts都引用某个类型,我们称之为
IFoo

因为它们共享
IFoo
,所以我想将该声明放在一个共享位置,所以我将
IFoo
放在dts/my-types.d.ts中

看起来像这样:

interface IFoo {
  [key: string]: any
}
有道理吧

但我的问题是,尽管在a.ts、b.ts和c.ts中可以识别
IFoo
,但一旦创建了声明文件,在

a.d.ts
b.d.ts
在这些文件中再也找不到
IFoo
。例如,在我的一个d.ts文件中:

declare var _default: (depList: string[], depContainerObj: IFoo) => Promise<any>;
export = _default;
为此:

export interface IFoo {
  [key: string]: any
}
现在情况正好相反-我的d.ts文件可以看到接口,但我的.ts文件不能!发生了什么事

发生了什么事

模块使用不一致。请尽可能使用模块,也不要使用全局模块。同样,也要导出接口IFoo{

我的d.ts文件可以看到接口,但我的.ts文件不能!发生了什么

在每个需要的文件中导入包含
IFoo
的文件,例如a.ts:

import {IFoo} from "./foo";
// now use IFoo
更多 关于模块已经说了很多

谢谢,看来我确实应该使用模块,而不是名称空间,因为我的模块将是“外部的”?
import {IFoo} from "./foo";
// now use IFoo