14

是否可以在 TypeScript 中导入模块或从 uri 引用定义文件?

我们将 RequireJS 用于我们的应用程序,并希望从 CDN 提供我们的一些定义文件和 TypeScript(或生成的 JavaScript)文件,而不是直接将它们全部包含在我们的项目中。

引用定义文件
在 TypeScript 中,我们可以像这样引用定义文件:

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

但是,我们想做的是:

/// <reference path="https://github.com/borisyankov/DefinitelyTyped/raw/master/jquery/jquery-1.8.d.ts" />

export class UsesSomethingFromJQuery {

    TestMethod(element: JQuery) {
        // Do something with the supplied element
    }

}

注意:我不打算使用 Boris 的 github 链接作为 CDN。我使用链接来演示这个概念。

导入 TypeScript 文件
我们还想从一个通用网站导入模块,如下所示:

import OtherModule = module('http://some-internal-site/ts/other');

export class UsesSomethingFromOther {

    TestMethod(c: OtherModule.TestClass) {

    }

}

但是,在为模块提供 uri 时出现错误“导入路径无效”。

我们要解决
的问题 我们有一个 TypeScript 文件库,可以为我们的控件、一些 REST 服务包装器和其他实用程序生成 JavaScript。我们希望在其他 Web 应用程序中使用这些通用控件。

当我们有一个特定于我们的一个网站(因此不是公共核心的一部分)的 TypeScript 文件依赖于公共核心中定义的类时,我们希望使用 uri 来引用依赖项。因此上面的问题。

如果这些只是 JavaScript 源文件,我们会将它们托管在内部 CDN 上并从那里引用,但是在 TypeScript 编译步骤中我们会遇到问题。我们是否以错误的方式处理这个问题?有没有更好的办法?

4

1 回答 1

4

我认为从 CDN 提供 JavaScript 输出是一个好主意,这会影响您的模块加载器或脚本标签,但.d.ts运行时不需要这些文件。

您可以在 TypeScript 中调整此 RequireJS 和 jQuery 示例,以像这样远程加载文件...

  1. 本地定义文件 ( .d.ts)
  2. 远程运行时文件,使用require.config.

应用程序.ts

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

require.config({
  paths: {
    'jquery' : 'https://ajax.googleapis.com/ajax/libs/jquery/1.9.0/jquery.min'
  }
});

require(['jquery'], function (jquery) {
    jquery(document).ready(() => {
        alert('Your code executes after jQuery has been loaded.');
    });
});
于 2013-01-26T14:06:13.123 回答