【问题标题】:Typescript definition for existing jQuery plugin with nested function具有嵌套函数的现有 jQuery 插件的打字稿定义
【发布时间】:2015-08-21 11:21:58
【问题描述】:

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

根据我目前的情况,第一个用例已涵盖,但第二个用例未涵盖。如何编写定义文件以涵盖这两个用例?

【问题讨论】:

    标签: typescript


    【解决方案1】:

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

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

    Playground

    另见:Implementing TypeScript interface with bare function signature plus other fields

    【讨论】:

      猜你喜欢
      • 2019-08-03
      • 2023-01-09
      • 1970-01-01
      • 1970-01-01
      • 2019-07-12
      • 2019-07-30
      • 1970-01-01
      • 1970-01-01
      • 2012-11-06
      相关资源
      最近更新 更多