我正在编写一个将作为外部模块公开的库(此帖子的Foo)。我还编写了jQuery插件/扩展,它将拉取对象的实例(来自Foo.Button)。
我发现哪种方式有用,就是在我的界面文件中将我的类重新声明为接口:
declare interface JQuery_Button {
text():string;
}
interface JQueryStatic {
fooButton(): JQuery_Button[];
}
interface JQuery {
fooButton(): JQuery_Button[];
}
它的工作方式很多,但会导致大量冗余代码。引用我的外部模块的代码也会期望Foo.Button而不是JQuery_Button。
我还看了一下在定义文件中声明模块,我也得到了一些有用的东西。但是,它需要更改我的jQuery.d.ts文件才能工作,而且我不想更改jQuery.d.ts。
在我的理想世界中,我希望能够编写如下代码:
import Foo = require('Foo');
import $ = require('jquery');
let someButton : Foo.Button = $('#someButton').fooButton();
let buttonText : string = someButton.text();
在VS Code中使用intellisense进行了很好的类型检查。
有没有办法做到这一点或类似的东西?
答案 0 :(得分:1)
在我理想的世界里,我希望能够编写这样的代码:
如果你想要的只是:
import Foo = require('Foo');
import $ = require('jquery');
let someButton : Foo.Button = $('#someButton').fooButton();
let buttonText : string = someButton.text(
然后您应该触摸的仅界面是JQuery
(不是JQueryStatic
)。
declare interface JQuery_Button {
text():string;
}
interface JQuery {
fooButton(): JQuery_Button[];
}