我有一组旨在使用UI的模块,所以这就像文件夹一样:
ui/
dialogs.ts
tabs.ts
progress-bar.ts
menus.ts
我想在命名空间下导入这些模块,而不是这样做:
import uiDialogs = require('ui/dialogs');
import uiMenus = require('ui/menus');
我希望我能做到这样的事情:
import ui {
dialogs: require('ui/dialogs'),
menus: require('ui/menus')
}
有没有办法在TypeScript中执行此操作?
答案 0 :(得分:1)
在TypeScript中无法直接执行此操作。 AMD模块的代码生成并没有真正适用于此 - 模块名称位于顶层,因此编译器必须使用一个名称来为您使用。
您可以模拟编译器为实现此目的而必须执行的操作:
import __k = require('ko');
module imports {
export import ko = __k;
}
var x = imports.ko.whatever;
答案 1 :(得分:0)
如果我理解你的问题,你可以这样做:
import dialogs = require('ui/dialogs');
import menus = require('ui/menus');
var ui = {dialogs: dialogs, menus: menus};
答案 2 :(得分:-1)
我建议你在ui
文件夹中创建一个index.ts:
ui/
dialogs.ts
tabs.ts
progress-bar.ts
menus.ts
index.ts
内容如下:
import uiDialogs = require('ui/dialogs');
export var dialogs = uiDialogs;
import uiMenus = require('ui/menus');
export var menus = uiMenus;
和用法:
import ui = require('ui/index');
这也是nodejs推荐的模式。您可以在此处投票选择相关的TypeScript功能:https://typescript.codeplex.com/workitem/2125您甚至不需要键入/index
,因为nodejs已经假定了这一点。 TypeScript可以轻松地为node / amd编码gen。