带有'on'语句的jQuery错误''focus''类型的参数不能分配给'PlainObject <false | =“”eventhandler <htmlelement =“”

时间:2018-02-14 14:29:00

标签: jquery typescript

=类型的参数“”

我收到以下错误:

  

TS2345:“焦点”类型的参数不能分配给'PlainObject void&gt;类型的参数。 | EventHandlerBase      

./Scripts/Common/kendo.ts中的错误

在我的Typescript文件中使用这个jQuery语句:

$(() => {
    $("body").on("focus", ".k-datepicker input, .k-datetimepicker input", (e: Event) => {
        const target: JQuery = $(e.target);
        if (target.closest(".k-widget").hasClass("k-datepicker")) {
            target.data("kendoDatePicker").open();
        } else {
            target.data("kendoDateTimePicker").open("date");
        }
    });
});

查看此处的文档http://api.jquery.com/on/,没有任何版本的on函数甚至将事件处理程序作为第一个参数。 Visual Studio中的Intellisense也确认参数应该是正确的。

我在package.json中使用以下版本:

"@types/jquery": "^3.3.0",
...
"jquery": "^3.3.1",
...
"typescript": "^2.5.0"

任何可能导致此错误的想法?

1 个答案:

答案 0 :(得分:1)

问题是Event声明。 jQuery将类型jQuery.Event(不是Event)的对象传递给您的回调。

解决方案是删除Event声明。

$(() => {
    $("body").on("focus", ".k-datepicker input, .k-datetimepicker input", (e) => {
        const target: JQuery = $(e.target);
        if (target.closest(".k-widget").hasClass("k-datepicker")) {
            target.data("kendoDatePicker").open();
        } else {
            target.data("kendoDateTimePicker").open("date");
        }
    });
});