在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编译步骤我们会遇到问题。我们是以错误的方式接近这个吗?还有更好的方法吗?
答案 0 :(得分:5)
我认为从CDN服务您的JavaScript输出是一个好主意,这会影响您的模块加载器或脚本标记,但运行时不需要.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.');
});
});