type EventWithTarget = E & { target: T } export function bindEvent( target: T, event: E ): EventWithTarget { Object.defineProperties(event, { target: { value: target, enumerable: true, writable: true, }, currentTarget: { value: target, enumerable: true, writable: true, }, }) return event as EventWithTarget }