2017-04-18 49 views
0

我有這樣的結構:d.ts文件無法「看到」的類型聲明

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 
} 

有道理嗎?

但我的問題是,雖然IFoo在a.ts,b.ts和c.ts認可,一旦我的聲明文件被創建,在

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

這是怎麼回事?

模塊的使用不一致。請儘可能使用模塊,也可以不使用全局變量。所以做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

+0

感謝,所以它看起來像我確實應該用模塊,沒有命名空間,因爲我的模塊會「外部」? –