如何在TypeScript中导入循环内部的外部模块?

时间:2013-10-10 02:22:33

标签: typescript

我正在尝试在循环内导入“ui”(基于_moduleList进行动态加载。这很好用:

var _moduleList: Array<string>;
_moduleList.push("mdlGame");
import _tmp = require("ui");
for (var _i: number = 0; _i < _moduleList.length; ++_i) {

}

然而,这会在import下面显示一条红色的波浪线,说“意外的令牌;预期的'陈述'。”:

var _moduleList: Array<string>;
_moduleList.push("mdlGame");
for (var _i: number = 0; _i < _moduleList.length; ++_i) {
    import _tmp = require("ui");
}

import不算作声明吗?这里发生了什么,有没有办法可以解决它?

2 个答案:

答案 0 :(得分:3)

时间已过,但OP的问题 功能仍然存在。

但是,我刚刚找到了一个部分解决方法(使用namespace import pattern),就像在这个例子中一样。

我正在导入index.ts文件,如下所示:

    import { A } from './some/a';
    import { B } from './some/other/b';
    export { A, B };                     // you'll save this list
    export const LIST: any[] = [ A, B ]; // and this other too

保存这两个清单是我的目的,因为它们每个都有数十个项目并且不断增长。

  • modules.ts

    export { A } from './some/a';
    export { B } from './some/other/b';
    
  • list.ts

    import * as modules from './modules';
    export const LIST: any[] = Object.keys(modules).map(key => modules[key]);
    
  • index.ts

    export * from './modules';
    export * from './list';
    

所有工作都按预期进行,而且完全干了。

答案 1 :(得分:2)

您只能在文件的根级使用import关键字,例如:

declare module"ui"{}

//  Bad 
{
    import foo = require("ui");
}

// okay 
import bar = require("ui");

如果你真的想要它,你可以回归基本的JS:

declare module"ui"{}
declare var require; 

//  okay now 
{
    var foo = require("ui");
}

然后你失去了两个文件之间的安全性