d.ts文件不能“看到”类型声明

时间:2017-04-18 21:37:58

标签: 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
}

有道理吗?

但我遇到的问题是,虽然在.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;
找不到

IFoo。这是为什么?我该如何解决这个问题?

这是一个线索!

当我改变这个时:

interface IFoo {
  [key: string]: any
}

到此:

export interface IFoo {
  [key: string]: any
}

现在情况正好相反 - 我的d.ts文件可以看到界面,但我的.ts文件不能!发生了什么事?

1 个答案:

答案 0 :(得分:1)

  

发生了什么事?

模块使用不一致。请尽可能使用模块,即没有全局变量。 export interface IFoo {

也是如此
  

我的d.ts文件可以看到界面,但我的.ts文件不能!发生了什么事?

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

import {IFoo} from "./foo";
// now use IFoo

更多

关于模块的说法很多 https://basarat.gitbooks.io/typescript/content/docs/tips/outFile.html