我正在转换一个包含大量jQuery插件的大型JS文件来使用TypeScript,因此我还需要创建必要的TS定义文件。我遇到了一个插件,我无法弄清楚。的定义文件。
插件示例:
(function ($) {
$.fn.foo = function (options) {
var settings = $.extend({
one: false,
two: true
}, options);
//do something
};
$.fn.foo.bar = function (input) {
return input;
};
})(jQuery);
用法示例:
$('#list').foo({
one: true});
var updatedHtml = $('#label').foo.bar("hello world");
TypeScript定义(到目前为止):
interface JQuery {
foo(options: any) : JQuery;
}
根据我到目前为止,第一个用例被涵盖,但不是第二个。如何编写定义文件以便它涵盖两个用例?
答案 0 :(得分:3)
您可以使用匿名接口(或任何正式名称)来定义函数及其静态字段:
interface JQuery {
foo: {
(options: any): JQuery;
bar: <T>(input: T) => T
}
}
另请参阅:Implementing TypeScript interface with bare function signature plus other fields