typescript - 从 Uri 导入 TypeScript 模块

标签 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 文件
我们还想从公共(public)网站导入模块,如下所示:

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

export class UsesSomethingFromOther {

    TestMethod(c: OtherModule.TestClass) {

    }

}

但是,我在为模块提供 uri 时收到错误“无效的导入路径”。

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

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

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

最佳答案

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

您可以调整 this example of RequireJS and jQuery in TypeScript像这样远程加载文件...

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

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.');
    });
});

关于typescript - 从 Uri 导入 TypeScript 模块,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13865445/

相关文章:

typescript - 如何使用 ionic 2/angular 2 和 typescript 设置 firebase

angular - 在 Angular 7 中将数据恢复为 react 形式

javascript - typescript 中有类似 'babel.transform().code'的功能吗?

visual-studio - Angular2 - 不会为提前编译生成 ngfactory 文件

angular - ts 中的父级和祖先注释

typescript 静态方法继承

javascript - 如何使用 Typescript 为 React 设置 Material-UI?

reactjs - 类型 'amp-img' 上不存在属性 'JSX.IntrinsicElements'

angular - 如何避免 Angular 9 中复杂 RxJS 管道的内存泄漏?

javascript - 解析对象以匹配接口(interface)