从Uri导入TypeScript模块

时间:2012-12-13 17:43:21

标签: typescript

在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编译步骤我们会遇到问题。我们是以错误的方式接近这个吗?还有更好的方法吗?

1 个答案:

答案 0 :(得分:5)

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

你可以调整this example of RequireJS and jQuery in TypeScript来远程加载文件......

  1. 本地定义文件(.d.ts
  2. 远程运行时文件,使用require.config
  3. app.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.');
        });
    });