如何在IE和PhantomJS中使用Typescript创建KeyboardEvent

时间:2018-01-20 21:38:44

标签: javascript internet-explorer testing phantomjs keyboard-events

我正在使用Angular2并且有一个接受KeyboardEvent对象的方法。我想为这种方法编写测试(如果重要的话,使用Karma和Jasmine)。

我使用KeyboardEvent构造函数编写了一些在Chrome中运行良好但在IE和PhantomJS中失败的构造函数。有没有办法在这些浏览器中运行?

方法签名:

public onDateKeypress(evt: KeyboardEvent): boolean {
    // ...
}

当前测试示例:

let ke = new KeyboardEvent("keypress", { "key": "" + i, });
onDateKeypress(ke);

1 个答案:

答案 0 :(得分:2)

这就是我最终的结果,我愿意接受更好的解决方案。

let ke = <KeyboardEvent>{ "key": "" + i, };
onDateKeypress(ke);

<强>解释: 打字稿代码将编译成Javascript,Javascript不关心数据的“类型”,只关注对象上有正确的属性/方法。

在我的情况下,onDateKeypress方法只使用evt param的“key”属性,所以我需要在我的测试对象上设置它。

需要将匿名对象转换为Keyboard事件,以便在没有抱怨的情况下编译Typescript,因为该方法需要一个KeyboardEvent类型的对象。