Búsqueda de sitios web

¿Es posible extender la clase integrada Event en TypeScript?


Código :

class MyEvent extends Event {
    constructor(name) {
        super(name);
    }
}

var event = new MyEvent("mousemove");

Error de ejecución:

TypeError no detectado: Error al construir 'Event': Por favor use el operador 'new', este constructor de objeto DOM no puede ser llamado como una función.

¿Hay alguna manera de evitar esto?

Respuesta #1

TypeError no capturado: Error al construir 'Event': Por favor use el operador 'new', este constructor de objeto DOM no puede ser llamado como una función.

El problema está con la definición de Event dentro del runtime v8. No se presta a la extensión basada en clase. El mismo problema solía existir para los errores, es decir, lo siguiente solía fallar:

class MyError extends Error {
    constructor(message) {
        super(message);
    }
}

const error = new MyError("some message");

Así que, en este momento, no puedes extender la clase Event en TypeScript (o clases ES6).

Respuesta #2

Event no está definido como una Clase en Typescript ya que es un objeto de JS. Lo que quieres en este caso es una clase envoltorio que llame a los métodos de Event de la manera que deseas. Luego puedes extender esa envoltura.