我正在尝试在循环内导入“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
不算作声明吗?这里发生了什么,有没有办法可以解决它?
答案 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");
}
然后你失去了两个文件之间的安全性