【问题标题】:TypeScript, AMD (requireJS) & Importing 3rd Party-Libraries drives me insaneTypeScript、AMD (requireJS) & Importing 3rd Party-Libraries 让我发疯
【发布时间】:2014-06-04 19:52:50
【问题描述】:

我正在尝试在我的 TypeScript 项目中使用 3rd-Party-Libraries,例如 Knockout。

在组织我的代码时,我使用的是 AMD(具体来说是 requireJS),为了在我的项目中使用库,我从出色的绝对类型项目中加载 d.ts 文件。

现在,虽然我可以使用我自己的模块和库 - 它们都是用 TypeScript 构建的 - 使用 ththis e simple 1 liner:

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

我不能用肯定类型提供的 d.ts 文件来做到这一点。

现在我知道了 amd-dependency-command,但我不明白它有什么用处。 在我的 JS 代码中,我确实在定义调用中获得了对路径的引用,但没有在创建的回调中获得变量。

用代码“说”它:

我的 TS 文件 (从 /// 命令中删除了打开标签,否则它不会在 stackoverflow 中显示)

/// 参考路径="../../../../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 依赖项创建了指向 knockout-js 文件的正确链接,但它没有产生在 d.ts 文件中声明的“ko”变量。

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

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

非常感谢大家!

【问题讨论】:

    标签: requirejs typescript amd definitelytyped


    【解决方案1】:

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

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

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

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

    输入文件不需要 require 语法。

    【讨论】:

    • 感谢约翰尼的帮助!我实际上是这样做的,但我不喜欢它,因为我必须通过“
    • 嗨,Richard,您根本不必在运行时加载定义文件。您只需要在编译时使用它们 - 因此不需要 *.d.ts 文件的脚本 src。希望我的理解正确吗?
    • 嗨,约翰尼,我知道我不需要定义文件,而是“实现”。我会更新我的问题以反映问题。感谢您的帮助!
    • 嗨,理查德,我看到了你的问题。您需要使用 import / require 来选择淘汰赛。如果您愿意,请查看此帖子作为示例:icanmakethiswork.blogspot.co.uk/2014/02/…
    • 约翰,你太棒了 :) 谢谢!
    猜你喜欢
    • 1970-01-01
    • 2013-08-05
    • 2011-05-30
    • 2012-11-02
    • 2020-11-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-04-19
    相关资源
    最近更新 更多