7

我正在尝试在循环内导入“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不算作陈述吗?这里发生了什么,有没有办法解决它?

4

2 回答 2

7

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

但是,我刚刚找到了一个部分解决方法(使用命名空间导入模式),就像在这个例子中一样。

我正在导入一个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

保存这两个列表是我的目的,因为它们每个都有几十个项目,并且还在不断增长。

  • 模块.ts

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

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

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

一切都按预期工作,并且完全干燥。

于 2018-01-11T16:44:36.003 回答
4

您只能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");
}

但是你失去了两个文件之间的类型安全

于 2013-10-10T02:53:49.063 回答