存在名称冲突时如何访问 Typings 中的 JavaScript 内置函数?

How do I access JavaScript built-ins in Typings when there are name conflicts?

我正在努力更新 Paper.js 在以下 GitHub 存储库中找到的类型:

github.com/clark-stevenson/paper.d.ts

Paper.js有自己的MouseEvent class, MouseEvent。它没有扩展 JavaScript 的 MouseEvent,它是一个同名的包装器。这就是整个问题。当有同名的 class 时,如何引用 JavaScript 的内置 MouseEvent?

由于我自己从未实例化过 Paper.js 鼠标事件,我目前的解决方法是将其重命名为 PaperMouseEvent:

export class PaperMouseEvent extends Event {
    constructor(type:string, event:MouseEvent, point:Point, target:Item, delta:Point)

    /**
     * JavaScript's mouse event
     */
    event:MouseEvent;
}

有没有办法正确地做到这一点,或者这是一个常见的解决方法?

如果我理解正确,那么您只需要做:

declare module "paper" {
    class MouseEvent extends Event {
        constructor(type:string, event:MouseEvent, point:Point, target:Item, delta:Point);
        event: MouseEvent;
    }
}

编辑

您可以尝试使用类型别名 "save reference" 到内置 MouseEvent:

type NativeMouseEvent = MouseEvent;

declare module "paper" {
    class MouseEvent extends Event {
        constructor(type:string, event:MouseEvent, point:Point, target:Item, delta:Point);
        event: NativeMouseEvent;
    }
}