为什么我的简单打字稿函数需要jQueryEventObject参数?

时间:2012-10-30 10:51:26

标签: javascript jquery typescript

我有以下代码:

function submitSuccessAccess() {
    $(".accessLink")
        .attr("data-disabled", "no");
    window.location.reload();
}

我试图像这样调用这个函数:

submitSuccessAccess();

然而,我在submitSuccessAccess下得到一个红色下划线说:提供的参数与调用目标的任何签名都不匹配。看起来像submitSuccessAccess期待的那样:

(eventObject: JQueryEventObject) => any

我找到了一个临时解决方案。我定义并使用如下:

function submitSuccessAccess(any) {
    $(".accessLink")
        .attr("data-disabled", "no");
    window.location.reload();
}
submitSuccessAccess(null);

我是唯一一个体验过这样的人吗?

2 个答案:

答案 0 :(得分:2)

因为打字稿中存在错误。

尝试指定函数的返回类型,以使用jQuery.d.ts中的定义更改函数定义:

jqueryevent(handler: (eventObject: JQueryEventObject) => any): JQuery;

jqueryevent就像click,bind,ect。

您的定义可能是:

function submitSuccessAccess():void {
    $(".accessLink")
        .attr("data-disabled", "no");
    window.location.reload();
}

可能你的调用上下文是这样的:

$(selector).click(function() {
    submitSuccessAccess();
});

这是由这样的事情初始化的:

$(document).ready(function() {
    initSubmitAccessFunction();
})

答案 1 :(得分:0)

您的功能的实际代码可能是:

function submitSuccessAccess(eventObject: JQueryEventObject) {
    $(".accessLink")
        .attr("data-disabled", "no");
    window.location.reload();
}

如果您不想提供参数,可以更改jquery.d.ts文件中的相关行

(eventObject: JQueryEventObject) => any

(eventObject?: JQueryEventObject) => any

首先应该是这样的。