我现在已经玩了几个小时的打字稿了,还没弄明白我是如何与我的模块一起导入淘汰赛的?
没有打字稿我会在我的define(["require", "exports", "knockout" ...],function(... , ko)
中需要它,但我没有设法获取打字稿来生成它。
我不知道从jquery到淘汰赛的区别是什么,$工作得很好,但是ko是未定义的。
///<reference path="../knockoutd.d.ts" />
///<reference path="../jquery.d.ts" />
import dl = module("DataLayer");
import vm1 = module("AppBarViewModel");
import vm2 = module("Nav2ViewModelCommander");
import vm3 = module("IdentityViewModel");
export class AppViewModel {
...
}
结果:
define(["require", "exports", "DataLayer", "AppBarViewModel", "Nav2ViewModelCommander", "IdentityViewModel"], function(require, exports, __dl__, __vm1__, __vm2__, __vm3__) {
var dl = __dl__;
var vm1 = __vm1__;
var vm2 = __vm2__;
var vm3 = __vm3__;
使用///<amd-dependency path="knockout" />
define(["require", "exports", "DataLayer", "AppBarViewModel", "Nav2ViewModelCommander", "IdentityViewModel", "knockout"], function(require, exports, __dl__, __vm1__, __vm2__, __vm3__) {
var dl = __dl__;
var vm1 = __vm1__;
var vm2 = __vm2__;
var vm3 = __vm3__;
答案 0 :(得分:2)
要使编译器在生成的JavaScript中包含AMD依赖项而不在TypeScript中导入它们,您可以使用以下代码:
/// <amd-dependency path="path/to/knockout/js" />
此功能记录严密,但非常有用。
答案 1 :(得分:1)
问题是KnockoutJS没有在AMD环境中定义window.ko
(即涉及RequireJS时)。因此,您必须使用///<amd-dependency />
或使用KnockoutJS作为适当的模块。
我有来自DefinitelyTyped的drafted up an AMD version of knockout.d.ts - 它允许您使用import ko = module('knockout')
。确保您同时获得 knockout.d.ts 和 knockout.amd.d.ts 。
答案 2 :(得分:1)
使用knockout.d.ts的最新打字稿和类型定义
import ko = require('knockout')
按预期工作。
答案 3 :(得分:0)
添加以下内容:
import ko= module("knockout");
更新
案例1:
根据您的错误module can not be aliased to a none module type
,这似乎更合理。您的knockout.ts文件不包含模块定义。要使用module指令导入文件文件,应该在该文件中定义一个模块。
案例2
如果这不起作用,很可能是由于:https://stackoverflow.com/a/13013956/390330你应该给出knockout.d.ts文件的路径:
import ko= module("/path/to/knockout.d.ts");
但是我认为不应该要求它,因为你引用的是.ts文件而不是.d.ts文件:
///<reference path="knockout.ts" />