不,这个主题不会回答我的问题,不,解决方案不仅仅是在nav.ts文件中导入Command
。 nav.ts是许多viewModel文件之一,它们将根据需要动态加载。唯一的问题是在类的构造函数中设置参数的类型。 (类型必须是“命令”)
在下面的类中,它将由require.js加载,方法viewModel()
需要一个动态的新类。在这种情况下NavViewModel
。
的 command.ts 的
export class Command {
...
public viewModel(name: string, callback: Function) {
require(["noext!boot/getViewModel/" + name], function (viewModel) {
callback(viewModel);
});
}
}
这是将由viewModel()
提取的类:
的 nav.ts 的
export class NavViewModel extends kendo.Router {
constructor(command: Command) {
super();
this.route('/:name', function (name) {
command.view(name, $('div.content'));
});
this.start();
}
}
修改 这是入口点(在评论2中要求)
main.ts (EntryPoint)
import lib = require("command");
var cmd = new lib.Command();
cmd.viewModel('nav', function (o) {
cmd.view('nav', $('div.header'), function () {
kendo.bind($('.header .nav'), new o.NavViewModel(cmd));
});
});
/修改
问题:
Visual Studio将抛出error TS2095: Could not find symbol 'Command'
,因为此模块中未定义“Command”类。
如果将从NavViewModel
构造函数中删除“Command”-Type,程序将正常工作。是否有任何解决方案可以在NavViewModel中引用Command类?
这不起作用:
/// <reference path="../../Scripts/command.ts" />
答案 0 :(得分:1)
使用RequireJS时,import语句应该是应用程序的 root 的完整路径。
我也使用稍微不同的导出语法
<强> command.ts 强>
class command {
...
}
export = command;
<强> main.ts 强>
// I'm assuming the Scripts folder is at the root of the application
import Command = require('Scripts/command');
var cmd = new Command();
注意强>
我正在使用Typescript 0.9.1.1。我无法将我的机器升级到0.9.5,因为大型内部应用程序受到版本之间的一些重大变化的影响