是否可以在 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像这样远程加载文件...
- 本地定义文件(
.d.ts
) - 远程运行时文件,使用
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/