相关疑难解决方法(0)

没有导出的TypeScript声明的异步加载

我有许多jQuery插件,我想在TypeScript中使用AMD模式加载.例如,我可能有这样的结构:

/lib/jquery.myplugin.js
/app.ts
Run Code Online (Sandbox Code Playgroud)

该插件只是扩展了jQuery.它不提供新的顶级函数或变量.一个例子可能是:

// jquery.myplugin.js
jQuery.fn.myExample = function() { ... }
Run Code Online (Sandbox Code Playgroud)

相应的jquery.myplugin.d.ts文件如下所示:

interface JQuery {
    myExample();
}
Run Code Online (Sandbox Code Playgroud)

所以现在在app.ts我可以调用类似的东西$('#my-element').myExample().请注意,这假设我已经加载了Microsoft的jquery.d.ts声明.

我的问题是如何异步加载此库并利用TypeScripts静态类型?我可以像这样使用它:

/// <reference path="lib/jquery.myplugin.d.ts"/>
Run Code Online (Sandbox Code Playgroud)

但这需要我在<script>HTML中添加标签,并且不会异步加载库.我希望TypeScript生成此代码:

define(["require", "exports", "lib/jquery.myplugin"], function (require, exports, __jquery.myplugin__) {
    ...
    // Use my plugin
    $('#my-element').myExample();
}
Run Code Online (Sandbox Code Playgroud)

但是由于.d.ts文件中没有导出,我无法编写import myplugin = module('lib/jquery.myplugin').

我最接近的是jquery.myplugin.d.ts使用接口声明引用另一个ts文件并包含至少一个导出.但是在这个库中没有什么可以导出的,为了获得所需的输出,我不仅需要添加导出,而且还必须调用它.

更新:我在typescript.codeplex.com上为此打开了一个工作项

javascript js-amd typescript

6
推荐指数
1
解决办法
1719
查看次数

标签 统计

javascript ×1

js-amd ×1

typescript ×1