Typescript 类型脚本错误:属性'';类型';中缺少';

Typescript 类型脚本错误:属性'';类型';中缺少';,typescript,Typescript,我遇到了一个TypeScript错误,代码如下: let event: KeyboardEvent = { preventDefault: () => { }, stopPropagation: () => { }, keyCode: 75 }; 其中错误为: 类型“{preventDefault:()=>void;stopPropagation:()=>void;keyCode:number;}”不能分配给类型“KeyboardEvent”。 属性“alt

我遇到了一个TypeScript错误,代码如下:

let event: KeyboardEvent = {
    preventDefault: () => { },
    stopPropagation: () => { },
    keyCode: 75
};
其中错误为:

类型“{preventDefault:()=>void;stopPropagation:()=>void;keyCode:number;}”不能分配给类型“KeyboardEvent”。
属性“altKey”在类型“{preventDefault:()=>void;stopPropagation:()=>void;keyCode:number;}”中丢失。

我明白了,它是TypeScript,它想让我提供一个完整的
键盘事件。但是
键盘事件的完整定义是:

interface KeyboardEvent extends UIEvent {
    readonly altKey: boolean;
    readonly char: string | null;
    readonly charCode: number;
    readonly ctrlKey: boolean;
    readonly key: string;
    readonly keyCode: number;
    readonly locale: string;
    readonly location: number;
    readonly metaKey: boolean;
    readonly repeat: boolean;
    readonly shiftKey: boolean;
    readonly which: number;
    readonly code: string;
    getModifierState(keyArg: string): boolean;
    initKeyboardEvent(typeArg: string, canBubbleArg: boolean, cancelableArg: boolean, viewArg: Window, keyArg: string, locationArg: number, modifiersListArg: string, repeat: boolean, locale: string): void;
    readonly DOM_KEY_LOCATION_JOYSTICK: number;
    readonly DOM_KEY_LOCATION_LEFT: number;
    readonly DOM_KEY_LOCATION_MOBILE: number;
    readonly DOM_KEY_LOCATION_NUMPAD: number;
    readonly DOM_KEY_LOCATION_RIGHT: number;
    readonly DOM_KEY_LOCATION_STANDARD: number;
}
太多了。我创建这个事件是为了单元测试,我只需要这三个属性。处理这个问题的正确方法是什么?我试图避免简单地将它声明为
any
,我也不想定义21个属性

有更好的办法吗


提前谢谢

尝试铸造到所需类型

let event: KeyboardEvent = {
    preventDefault: () => { },
    stopPropagation: () => { },
    keyCode: 75
} as KeyboardEvent;

你试过双重铸造吗?(
evt:KeyboardEvent=({…})as KeyboardEvent
)@olivarra1即使是简单的一次施放也能奏效
let事件:KeyboardEvent={preventDefault:()=>{},stopPropagation:()=>{},keyCode:75}作为KeyboardEvent。我不知道TypeScript允许这样做。非常好的发现。如果您只需要3个属性,那么您可以使用这3个属性定义自己的接口,并在整个代码中使用它。不要使用real
KeyboardEvent
,只需确保真正的事件可分配给您的事件即可。很好的答案,不过,一些指向文档或解释的链接就很好了