TypeScript,AMD(requireJS)&导入第三方库让我感到疯狂

时间:2014-04-20 17:47:30

标签: requirejs typescript amd definitelytyped

我正在尝试在我的TypeScript项目中使用第三方库,例如Knockout。

在组织我的代码时,我正在使用AMD(requireJS是特定的)并在我的项目中使用库,我从伟大的absolutetyped项目加载d.ts文件。

现在虽然我可以使用我自己的模块和库 - 这些都是使用TypeScript构建的 - 使用这个简单的1个衬垫:

  

导入PeopleViewModel = require(“../ ViewModels / PeopleViewModel”);

我无法使用由absolutetyped提供的d.ts文件。

现在我知道了amd-dependency-command,但我不明白它是如何有用的。 在我的JS代码中,我确实引用了define-call中的路径,但没有引用创建的回调中的变量。

在代码中“说出”:

我的TS-File (从/// - 命令中删除了openening-tag,否则它将不会在stackoverflow中显示)

  

/// reference path =“../../../../ Libs / Knockout / knockout.d.ts”/>

     

/// amd-dependency path =“../../../../ Libs / Knockout / knockout-3.1.0”/>

     

导入PeopleViewModel = require(“../ ViewModels / PeopleViewModel”);

     

var johnViewModel = new PeopleViewModel(“john”);

     

var exampleVar = ko.observable(johnViewModel);

编译为:

  

define([“require”,“exports”,“../ ViewModels / PepertViewModel”,“../ Libs / Knockout / knockockout-3.1.0”],function(require,exports,PeopleViewModel){

var johnViewModel = new PeopleViewModel("john");
var exampleVar = ko.observable(johnViewModel);
     

});

现在你可以看到,amd-dependency创建了与knockout-js文件的正确链接,但它不是“do”文件中声明的“ko”变量。

如何在不触及js文件的情况下使其工作?

也许amd-dependency-command中有一个参数,但是仍然没有关于它的文档。

非常感谢你们!

1 个答案:

答案 0 :(得分:1)

要使用定义文件,您只需要在文件的头部添加这样的引用:

/// <reference path="jquery/jquery.d.ts" />

或者如果使用视觉工作室,你甚至不需要它们!

如果使用visual studio 2012和nuget,您可能因不正确的内容类型问题而陷入困境。确保在解决方案资源管理器中将所有键入文件(* .d.TS)设置为TypeScriptCompile。

无需输入文件的必需语法。