我收到以下错误:
TS2345:“焦点”类型的参数不能分配给'PlainObject void>类型的参数。 | 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"
任何可能导致此错误的想法?
答案 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");
}
});
});