2016-09-19 58 views
1

我有一系列相關的類打包並從單個模塊導出。喜歡的東西:鍵入模塊名稱空間對象的索引簽名

// states.ts 

export {default as Alabama} from "./alabama"; 
export {default as Alaska} from "./alaska"; 
//... 

現在,其他地方的代碼,我想通過遍歷所有相關的類:

import * as States from "./states.ts" 

for(let stateExportName in States) { 
    let thisStateConstructor = States[stateExportName]; 
    // ... do something. 
} 

握住一邊在CommonJS的模塊的出口名稱該迭代將使用for-在(如上所述),而迭代es6模塊名稱空間對象的導出將使用for-of(因爲模塊名稱空間對象上的es6 does define @@ iterator)......在這兩種情況下,都應該可以進行此迭代。

問題是,當我做States[stateExportName],我得到一個「隱式對象類型的索引簽名具有'任何'類型。」這是有道理的,因爲我沒有在任何地方爲模塊定義索引簽名。

我的問題是:是否可以在Typescript中爲ES6模塊定義這樣的簽名?如果是這樣,怎麼樣?

回答

0

是有可能在打字原稿定義ES6模塊這樣的簽名

號但是可以是顯式的中,如下所示的任何性質:

import * as States from "./states.ts" 

for(let stateExportName in States) { 
    let thisStateConstructor:any = States[stateExportName]; // NOTICE THE `:any` 
    // ... do something. 
} 
+0

「不「是我的想法。然後我會在TS回購上爲此打開一個問題。 關於使任何明確的:當我添加':any'我仍然得到相同的錯誤。任何想法爲什麼? – Ethan

相關問題