首页 文章

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

提问于
浏览
0

我正试图在我的TypeScript项目中使用Knockout等第三方库 .

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

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

import 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“/> import PeopleViewModel = require(”../ ViewModels / PeopleViewModel“); var johnViewModel = new PeopleViewModel(“john”); var exampleVar = ko.observable(johnViewModel);

这编译成:

define([“require”,“exports”,“../ ViewModels/PeopleViewModel”,“../ Libs / Knockout / knockockout-3.1.0”],function(require,exports,PeopleViewModel){var johnViewModel = new PeopleViewModel( “约翰”);
var exampleVar = ko.observable(johnViewModel);
});

现在你可以看到,amd-dependency创建了与knockout-js文件的正确链接,但是它并没有在d.ts文件中声明的“ko”变量 .

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

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

谢谢大家!

1 回答

  • 1

    要使用定义文件,您只需要在文件头部添加如下引用:

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

    或者如果使用visual studio,您甚至不需要它们!

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

    不需要输入文件的语法 .

相关问题