使用ctrlKey set

时间:2018-04-18 06:24:45

标签: javascript jquery typescript javascript-events definitelytyped

我即将使用当前Typedefinitions更新到Typescript上的jQuery 3。

编译代码时

const event:JQuery.Event<HTMLElement, null> = $.Event("keydown");
event.which = 77;
event.ctrlKey = true;
$(window).trigger(event);

我收到以下错误

TS2540: Cannot assign to 'ctrlKey' because it is a constant or a read-only property.

我该如何解决这个问题?这对于jQuery 2来说没有问题,无论我在哪里看到它都是使用set ctrlKey触发事件的推荐方法。

解决此编译器错误的唯一方法是将其重写为

event["ctrl" + "Key"] = true;

但这感觉太过于hacky :)我正在寻找一个顺利的解决方案。

1 个答案:

答案 0 :(得分:0)

以下内容从@types/jquery@3.3.13(由DefinitelyTyped/DefinitelyTyped#29520修订)开始生效。

const ev: JQuery.Event<Window> = $.Event("keydown");
ev.which = 77;
ev.ctrlKey = true;
$(window).trigger(ev);

对于较旧的版本,您将必须使用以下内容。

const ev: JQuery.Event<Window> = $.Event("keydown", { ctrlKey: true });
ev.which = 77;
$(window).trigger(ev);