2017-01-16 137 views
0

我在不同的目錄中有很多模板 - 我爲每個模板定義了一個接口,因此我可以確定我的TypeScript代碼中引用的內容將在模板中可用。在TypeScript中導出導入的接口

我想爲它們中的每一個定義一個接口,然後在可導入的單個文件中整理所有接口(這樣我總是可以導入該文件,自動完成將顯示可用接口)。

但是,我遇到了麻煩。我目前有:

login/interface

export interface Index { 
    error: string; 
    value: string; 
} 

interfaces.ts

import * as login from './login/interface'; 
export let View = { 
    Login: login 
}; 

login.ts

import * as I from './interface'; 
... 
let viewOutput: I.View.Login.Index = { 
    ... 
}; 

結果:

錯誤TS2694:名稱空間'「...'接口''沒有導出成員'查看'。

但是,如果我嘗試訪問I.View.Login.Index作爲一個簡單的變量,然後我得到:

屬性「索引」的類型不存在「的typeof‘......界面’」。

這似乎是正確的,因爲界面並不是真正的類型,但它已經能夠訪問I.View.Login以獲得這樣的效果。

我不明白我在做什麼錯或在這裏我很害怕。任何幫助將不勝感激!

回答

3

您可以re-export像這樣:

// interfaces.ts 
export * from './login/interface'; 
export * from './something/interface'; 

然後:

// login.ts 
import * as I from './interface'; 
let viewOutput: I.Index = { ... } 

另一種選擇是:

import * as login from './login/interface'; 
export { login as Login }; 

然後:

// login.ts 
let viewOutput: I.Login.Index = { ... } 
+0

謝謝!我會怎樣把它包裝在一個'View'對象中(例如'I.View.Login.Index'),這將允許我基本命名空間我的各種視圖接口,我似乎無法弄清楚這個語法。 –

+0

你可以用'export ='來做到這一點,但我認爲這不是一個好主意 –