具有嵌套函数的现有jQuery插件的Typescript定义

时间:2015-06-06 15:36:46

标签: typescript

我正在转换一个包含大量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;
}

根据我到目前为止,第一个用例被涵盖,但不是第二个。如何编写定义文件以便它涵盖两个用例?

1 个答案:

答案 0 :(得分:3)

您可以使用匿名接口(或任何正式名称)来定义函数及其静态字段:

interface JQuery {
    foo: {
        (options: any): JQuery;
        bar: <T>(input: T) => T
    }
}

Playground

另请参阅:Implementing TypeScript interface with bare function signature plus other fields