【问题标题】:What is the difference between the JQuery and the JQueryStatic interface in TypeScript?TypeScript 中的 JQuery 和 JQueryStatic 接口有什么区别?
【发布时间】:2012-10-18 09:45:39
【问题描述】:

有人可以解释一下吗?我意识到 jQuery 接口是预定义的,但 JQueryStatic 是什么?

我有以下几点:

(function($)
{

    $.fn.disableBt = function()
    {
        $(this).attr('disabled', true);
        if ($.browser.msie && $.browser.version < 9)
        {
            $(this).addClass('disabled');
        }
    }

})(jQuery);

我可以让 typescript 知道这一点的唯一方法是将它添加到 jQuery 界面中,如下所示:

    disableBt();
}

我尝试将它添加到 jQueryStatic 但它似乎不起作用:

interface JQueryStatic {
  modal( options );
  disableBt();
}

这是在我的模式中定义选项的方式:

$.modal.defaults = {
    content: false,
    useIframe: false,
    ...
    ...
var settings = $.extend({}, $.modal.defaults, options),

【问题讨论】:

    标签: javascript jquery typescript


    【解决方案1】:

    是否定义了“选项”(在模态(选项)中)?

    JQueryStatic 接口具有静态方法(“$ 和 jQuery 本身的那些”)

    JQuery 接口具有可以在 jQuery 元素上运行的成员,其中许多都返回 JQuery 本身以实现可链接性。

    interface JQueryStatic {
        someAdditionalMethod(): any;
    }
    $.someAdditionalMethod();
    
    interface JQuery {
        pluginMethod(): JQuery;
    }
    $("body").pluginMethod();
    

    如果你的情况是这样的:

    interface ModalDefaultOptions {
        content?: bool;
        useIframe?: bool;
    }
    
    interface JQueryStatic {
        modal: {
            defaults: ModalDefaultOptions;
        };
    }
    
    interface JQuery {
        disableBt(): void; // or :JQuery if you returned 'this' from the function 
    }
    
    $("#someButton").disableBt();
    $.modal.defaults.content = false;
    

    【讨论】:

    • @jeoriks - 我刚刚在我的问题中添加了声明/定义选项的方式。我不确定如何或是否可以使用打字稿添加该定义信息。可能吗?我是否正确地说如果我声明 foo(): any 那么这将允许 foo 和 typescript 的任何参数组合不会对它们进行检查?
    • 照你说的做。我是否正确地说我应该扩展的唯一接口是 JQueryStatic 并且没有理由需要扩展 JQuery 接口?
    • 啊,对不起,我误读了原来的问题。我现在更新了我的答案。我将开始将成员定义为 any (modal:any),看看它是否按预期工作,然后添加详细类型。
    • 确保在使用模块时不要将JQuery 接口声明放在模块中。它必须在全局顶级名称空间中,否则您将定义自己的 JQuery 接口而不是合并到 $ one
    猜你喜欢
    • 2012-12-30
    • 2018-10-11
    • 2017-04-19
    • 2019-10-16
    • 1970-01-01
    • 2011-01-25
    • 1970-01-01
    • 2019-09-17
    • 1970-01-01
    相关资源
    最近更新 更多