繁体   English   中英

TypeScript错误:类型'...'中缺少属性'...'

[英]TypeScript error: Property '…' is missing in type '…'

我用这段代码遇到了TypeScript错误:

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

错误在哪里:

Type '{ preventDefault: () => void; stopPropagation: () => void; keyCode: number; }' is not assignable to type 'KeyboardEvent'. Property 'altKey' is missing in type '{ preventDefault: () => void; stopPropagation: () => void; keyCode: number; }'.

我明白了,它是TypeScript,它要我提供一个完整的KeyboardEvent KeyboardEvent的完整定义是:

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;

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM