代码之家  ›  专栏  ›  技术社区  ›  Quails4Eva

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

  •  3
  • Quails4Eva  · 技术社区  · 6 年前

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

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

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

    当前测试示例:

    let ke = new KeyboardEvent("keypress", { "key": "" + i, });
    onDateKeypress(ke);
    
    1 回复  |  直到 6 年前
        1
  •  3
  •   Quails4Eva    6 年前

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

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

    解释 : typescript代码将被编译为Javascript,Javascript不关心数据的“类型”,只关心对象上有正确的属性/方法。

    在我的例子中,onDateKeypress方法只使用evt参数的“key”属性,所以这就是我需要在测试对象上设置的全部内容。

    需要将annonymous对象强制转换为KeyboardEvent事件,这样Typescript就可以编译而不会有任何问题,因为该方法需要KeyboardEvent类型的对象。