如何在 IE 和 PhantomJS 中使用 Typescript 创建 KeyboardEvent
How to create KeyboardEvent using Typescript in IE and PhantomJS
我正在使用 Angular2 并且有一个采用 KeyboardEvent 对象的方法。我想为此方法编写测试(如果重要的话,使用 Karma 和 Jasmine)。
我使用 KeyboardEvent 构造函数写了一些,它在 Chrome 中运行良好,但在 IE 和 PhantomJS 中失败。有没有一种方法可以在这些浏览器中运行?
方法签名:
public onDateKeypress(evt: KeyboardEvent): boolean {
// ...
}
当前测试示例:
let ke = new KeyboardEvent("keypress", { "key": "" + i, });
onDateKeypress(ke);
这就是我的最终结果,我愿意接受更好的解决方案。
let ke = <KeyboardEvent>{ "key": "" + i, };
onDateKeypress(ke);
说明:
打字稿代码将被编译为 Javascript 并且 Javascript 不关心 "type" 数据是什么,只关心对象上是否有正确的 properties/methods。
在我的例子中,onDateKeypress 方法只使用 evt 参数的 "key" 属性,所以这就是我需要在我的测试对象上设置的所有内容。
需要将匿名对象转换为键盘事件,这样 Typescript 才能编译而不会报错,因为该方法需要一个 KeyboardEvent 类型的对象。
我正在使用 Angular2 并且有一个采用 KeyboardEvent 对象的方法。我想为此方法编写测试(如果重要的话,使用 Karma 和 Jasmine)。
我使用 KeyboardEvent 构造函数写了一些,它在 Chrome 中运行良好,但在 IE 和 PhantomJS 中失败。有没有一种方法可以在这些浏览器中运行?
方法签名:
public onDateKeypress(evt: KeyboardEvent): boolean {
// ...
}
当前测试示例:
let ke = new KeyboardEvent("keypress", { "key": "" + i, });
onDateKeypress(ke);
这就是我的最终结果,我愿意接受更好的解决方案。
let ke = <KeyboardEvent>{ "key": "" + i, };
onDateKeypress(ke);
说明: 打字稿代码将被编译为 Javascript 并且 Javascript 不关心 "type" 数据是什么,只关心对象上是否有正确的 properties/methods。
在我的例子中,onDateKeypress 方法只使用 evt 参数的 "key" 属性,所以这就是我需要在我的测试对象上设置的所有内容。
需要将匿名对象转换为键盘事件,这样 Typescript 才能编译而不会报错,因为该方法需要一个 KeyboardEvent 类型的对象。