2016-09-19 62 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

相关问题