Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Typescript 键入模块命名空间对象的索引签名_Typescript - Fatal编程技术网

Typescript 键入模块命名空间对象的索引签名

Typescript 键入模块命名空间对象的索引签名,typescript,Typescript,我有一系列相关的类打包并从单个模块导出。比如: // 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 thisState

我有一系列相关的类打包并从单个模块导出。比如:

// 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 in(如上所述),而对es6模块命名空间对象导出的迭代将使用for of(因为模块命名空间对象上的es6@@iterator)。。。在任何一种情况下,这个迭代都应该是可能的

问题是,当我
声明[stateExportName]
时,我会得到一个“对象类型的索引签名隐式地有一个'any'类型”。这是有道理的,因为我没有在任何地方为模块定义索引签名

我的问题是:是否可以在Typescript中为ES6模块定义这样的签名?如果是,怎么做

是否可以在Typescript中为ES6模块定义这样的签名

不可以。但是,您可以明确说明中的任何性质,如下所示:

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

for(let stateExportName in States) {
  let thisStateConstructor:any = States[stateExportName]; // NOTICE THE `:any`
  // ... do something.
}
是否可以在Typescript中为ES6模块定义这样的签名

不可以。但是,您可以明确说明中的任何性质,如下所示:

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

for(let stateExportName in States) {
  let thisStateConstructor:any = States[stateExportName]; // NOTICE THE `:any`
  // ... do something.
}
“不”是我想的。那么我将在TS回购协议上对此进行发行。关于使any显式:当我添加
:any
时,我仍然会得到相同的错误。知道为什么吗?“不”是我想的。那么我将在TS回购协议上对此进行发行。关于使any显式:当我添加
:any
时,我仍然会得到相同的错误。知道为什么吗?