键盘事件TypeScript不正确的按键初始化。

问题描述 投票:0回答:1

我想创建一个类型为 键盘事件 原稿

const arrowLeft = new KeyboardEvent('keydown', { key: 'ArrowLeft' });
console.log(arrowLeft.keyCode, arrowLeft.key, arrowLeft.code);

我希望看到 arrowLeft.keyCode 本该是37岁,但我却得到 0, 'Left', '' 作为响应。同时,我不能手动改变arrowLeft和设置keyCode,因为它在KeyboardEvent接口中是readonly。

有人知道这是否是Typescript的问题吗?我怎样才能创建一个以37为参数的事件呢?钥匙码? 我试图在一个Angular组件上实现一个测试,我试图在typecript中创建一个类型为KeyboardEvent的事件 const arrowLeft = new KeyboardEvent('keydown', { key: 'ArrowLeft'}; console.log('ArrowLeft')。

angular typescript unit-testing keycode
1个回答
0
投票

我还是认为这是Typescript方面的一个bug,因为LanguageEvent有初始化器。无论如何,一个对我有效的变通方法是使用Object.define来设置keyCode。

Object.defineProperty(arrowRight, 'keyCode', {
    get : () => 39
});

console.log(arrowRight.keyCode, arrowRight.key, arrowRight.code);

不管keyCode已经被废弃,这并不意味着初始化器不应该支持它。最有力的论据是,Internet Explorer 9和11依赖于这个事实,它们不支持这个代码。https:/caniuse.com#search=event.code 或全力支持关键 https:/caniuse.com#search=event.key。 所以我认为LanguageEvent应该允许在其初始化器中使用keyCode。

let arrowRight = new KeyboardEvent('keydown', { keyCode: 39 });

© www.soinside.com 2019 - 2024. All rights reserved.