我想创建一个类型为 键盘事件 原稿
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')。
我还是认为这是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 });