2014-04-20 36 views
0

我想在我的TypeScript项目中使用第三方库,如Knockout。TypeScript,AMD(requireJS)&导入第三方库驱动我疯了

至于组织我的代码,我使用AMD(requireJS是具体的)并在我的项目中使用这些库,我从绝大多数的项目中加载d.ts文件。

现在,虽然我可以用我自己的模块和库 - 它们都建有打字稿 - 与ththisË简单的1个班轮:

import PeopleViewModel = require("../ViewModels/PeopleViewModel");

我不能这样做与提供的d.ts档案由绝对。

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

在代码中 “说” 它:

我的TS-文件(移除了///的openening标签 - 命令,否则它不会显示在这里计算器)

/// reference path="../../../../Libs/Knockout/knockout.d.ts" />

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

import PeopleViewModel = require("../ViewModels/PeopleViewModel");

var johnViewModel = new PeopleViewModel("john");

var exampleVar = ko.observable(johnViewModel);

编译为:

define(["require", "exports", "../ViewModels/PeopleViewModel", "../Libs/Knockout/knockout-3.1.0"], function(require, exports, PeopleViewModel) {

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

});

现在可以看到的是,AMD的依赖创造了正确的链接到淘汰赛,JS文件,但它不yiel在d.ts文件中声明的“ko”变量。

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

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

谢谢大家!

回答

1

要使用你只需要在你的文件的头部这样的参考定义文件:

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

或者如果使用Visual Studio的你甚至不需要他们!

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

无需键入文件所需的语法。

+0

谢谢你的帮助约翰尼!我其实是这样做的,但我不喜欢它,因为我必须通过“